Ma próbálkoztam olyan generikus elem kiválasztó control-t írni wpf-ben, aminek csak átadjuk a metódust, amit meg kell hívni, és magától intézi a lekérdezést, grid bindolást, gridben dupla kattra elem kiválasztást.
A metódust Func-ként adtam át, maga a metódus IList<konkréttípusamiazősbőlszármazik> típust adott vissza.
Amikor meg akartam mondani a property-nek, hogy mi is a fv amit kell majd hívni:
Func<IList<ősvalamiaminekvankulcsa> > DataSourceGetterMethod = proxy.GetAllKonrétTípus;
Erre azt mondta a fordító, hogy neeeem nem, ez nem így megy. Nem nagyon értettem, és ekkor világosítottak fel, hogy ez a kovariancia és a kontravariancia problémája, és hogy IList helyett IEnumerable-el kell próbálkozni, akkor működni fog. És igen, úgy működik, a dependency property-ket szépen be tudom állítgatni.
A problémát magát még nem teljesen értem, itt érdemes lehet utánaolvasgatni:
Covariance and Contravariance in c# 4.0
A C# 4.0 nyelvi újdonságai
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése