Ich habe einen Typ, der Generics verwendet. Nennen wir es FlowerDescriptor<T>
sind einige Blumen beschrieben Nummern usw.Abgeleitete Typen und Generics
so FlowerDescriptor<int>;
FlowerDescriptor<string>;
etc
Ich möchte einen Mechanismus (wahrscheinlich Methoden Erweiterung) zu tun 2 Dinge
- zu sehen, wenn etwas ist ein
FlowerDescriptor
und - zu sehen, was der Deskriptor ist.
I.e.
FlowerDescriptor<string>.GetType().IsFlowerDescriptor == true string.GetType().IsFlowerDescriptor == false
.
ebenso könnte ich von FlowerDescriptor<int>
d.h. herzuleiten class NumberedFlower: FlowerDescriptor<int>
neue NumberedFlower.GetType() IsFlowerDesriptor == true.
- wie oben, aber gibt den Typ
FlowerDescriptor<string>.GetType().GetFlowerDescriptor() == typeof(string) FlowerDescriptor<int>.GetType().GetFlowerDescriptor() == typeof(int) new NumberedFlower.GetType().GetFlowerDescriptor() == typeof(int)
Ich habe über mit Variationen von IsAssignableFrom
gespielt und es fühlt sich an wie das sollte mit typeof(FlowerDescriptor<>).IsAssignableFrom(typeof(FlowerDescriptor<string>))
arbeiten, aber es funktioniert nicht. Wenn es jedoch den generischen Typ hinzufügt, tut es das.
Ich suche derzeit nach GetInterfaces
, um verfügbare Schnittstellen zu kennen. Es wäre großartig, wirklich zu verstehen, was ich falsch zu tue ..
Das sieht am nächsten .. Würde das funktionieren, wenn FlowerDescriptor nicht der Basistyp und/oder nicht der sofort abgeleitete Typ wäre? d. h. kann es den Baum gehen und ihn irgendwo dort finden. –
Auch Schnittstellen im Mix? Wie so .. in der Produktion wäre es IFlowerDescriptor –