class Program
{
static void Main(string[] args) {
Check(new Foo());
Check(new Bar());
}
static void Check<T>(T obj) {
// "The type T cannot be used as type parameter..."
if (typeof(T).IsSubclassOf(typeof(Entity<T>))) {
System.Console.WriteLine("obj is Entity<T>");
}
}
}
class Entity<T> where T : Entity<T>{ }
class Foo : Entity<Foo> { }
class Bar { }
Was ist der richtige Weg, um dieses Ding kompilieren zu lassen? Ich könnte Entity<T>
aus einer nicht generischen Klasse EntityBase
Unterklasse, oder einfach versuchen, typeof(Entity<>).MakeGenericType(typeof(T))
und sehen, ob es gelingt, aber gibt es einen Weg, der try { } catch { }
blockiert nicht oder mauls die Typhierarchie?Ermitteln, ob Typ eine Unterklasse eines generischen Typs ist
Es gibt einige Methoden auf Type
, die aussehen wie sie nützlich sein könnte, wie GetGenericArguments
und GetGenericParameterConstraints
aber ich bin völlig ratlos, wie sie verwenden ...
möglich Duplikat [Überprüfen Sie, ob eine Klasse von einer generischen Klasse abgeleitet ist] (http://stackoverflow.com/questions/457676/check-if-a-class-is-derived-from-a- generic-class) –
vielen dank, das beantwortet die frage – user1096188
, aber ich habe keine Ahnung, wie diese Frage zu löschen/schließen .... – user1096188