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 { }
使这个东西编译的正确方法是什么?我可以Entity<T>
从非泛型EntityBase
类继承子类,或者可以尝试typeof(Entity<>).MakeGenericType(typeof(T))
看看它是否成功,但是有没有一种方法不会滥用try { } catch { }
块或破坏类型层次结构?
有一些方法Type
看起来很有用,就像GetGenericArguments
但GetGenericParameterConstraints
我完全不知道如何使用它们......