Ich versuche, eine generische Möglichkeit zu erstellen, um zu halten, welche Eigenschaft ich gegen eine gegebene Klasse suchen sollte.Erstellen von generischen mit Unterklasse
Ich habe die folgende Struktur geschaffen, diese Informationen zu halten:
public struct Lookup<T> where T: BaseEntity
{
public Expression<Func<T, object>> Parent { get; set; }
}
Und dann ein Wörterbuch erstellt haben, wie folgt:
readonly Dictionary<string, Lookup<BaseEntity>> _dict =
new Dictionary<string, Lookup<BaseEntity>>();
Ich habe eine Klasse, die die BaseEntity
als Basisklasse verwendet :
public class Agency : BaseEntity
{
public int AgencyId { get; set; }
}
Ich erstelle eine neue Lookup-Struktur mit dieser Information:
new Lookup<Agency>
{
Parent = x => x.Id
};
Aber wenn ich versuche, diese zu meinem Wörterbuch bekomme ich folgende Fehlermeldung:
Cannot convert from Lookup<Agency> to Lookup<BaseEntity>
Ich hätte gedacht, dass dies funktionieren würde, wie sie von dem gleichen Basistyp sind, was ist der Weg ringsum.
ich eine ganze Reihe von Entitäten hinzuzufügen, so hatte gehofft, dass es allgemein zu tun, anstatt zu tun haben, wenn/Schalter usw.
Dank
Lesen Sie in Kovarianz: sowieso Sie gehen mit den nicht typisierten
Expression
s zu arbeiten - Während Sie starke Typisierung müssenLookup<Agency>
erstellen, brauchen Sie es nicht in der Art selbst. –