如果我有一个带静态构造函数和约束的泛型类型
interface IMyInterface
{
...
}
class MyGeneric<T> where T : IMyInterface
{
static MyGeneric()
{
....
}
}
封闭式:
class MyClass : MyGeneric<TypeImplementingIMyInterface>
{
...
}
是否有可能通过反射,从MyGeneric 中的静态构造函数中检索闭合类型(MyClass)的类型?如果是这样,如何?
到目前为止,我已经尝试过没有成功:
var t = typeof(MyGeneric<>);
var t = MethodBase.GetCurrentMethod().GetType()
; 我知道我可以使用Curiously Recurring Template Pattern来做我想要的事情:
interface IMyInterface
{
}
class MyBase
{
}
class MyGeneric<T1, T2> : MyBase where T1 : IMyInterface, T2 : MyBase
{
static MyGeneric()
{
var t = typeof(T2);
// ...
}
}
class MyClass : MyGeneric<TypeImplementingIMyInterface, MyClass>
{
// ...
}
我想知道是否有其他方法可用于所述方案。
如果答案是答案,我接受否定答案。
答案 0 :(得分:0)
来自Evk的评论是对该问题的间接回答:
是的,但是封闭类型是MyGeneric,而不是MyClass。 您可以像往常一样获取当前关闭类型:typeof(MyGeneric),但这样会 当然不是MyClass,因为这是完全不同的类型。
所以答案可以是: 假设MyClass与MyGeneric是同一个类是错误的,因此从泛型类型中无法获得MyClass的类型。