Ich habe eine Funktion, die eine Signatur vonUngültiges Argument - Interfaces vererbt, wie funktioniert, implizites Casting nicht. Was gibt?
Update(IEnumberable<INotifyPropertyChanging> things)
und eine Klasse
doohickey : INotifyPropertyChanging, INotifyPropertyChanging{}
Wenn ich versuche zu tun
List<doohickey> doohickeys = new List<doohickey>();
Update(doohickeys);
eine Ausnahme ausgelöst wird erklärt hat:
cannot convert from 'System.Collections.Generic.List<doohickey>' to 'System.Collections.Generic.IEnumerable<System.ComponentModel.INotifyPropertyChanging>'
Was gibt? Doohickey erbt die INotifyPropertyChanging-Schnittstelle und List erbt die IEnumerable-Schnittstelle! Wie kommt es, wenn man einfach das Objekt passiert und erwartet, dass es niedergeschlagen wird?
Ich habe die Verweise auf INotifyPropertyChanging enthalten, um anzuzeigen, dass Doohickey eigentlich eine linq-to-sql-Klasse ist; falls dieses bisschen Kontext wichtig ist.
Ich denke, es hat mit Kovarianz/Kontravarianz zu tun. Verwenden Sie C# 4? http://blogs.msdn.com/b/csharpfaq/archive/2010/02 /16/covariance-and-contravariance-faq.aspx –
hast du _exception_ oder _compile error_? – Shrike