首页 > 解决方案 > 泛型参数是否有等效的“this”

问题描述

伪代码:

class A
{
    static A()
    {
        SomeGenericMethod<THISCLASS, U>(); // THISCLASS = A
    }
}

class B
{
    static B()
    {
        SomeGenericMethod<THISCLASS, V>(); // THISCLASS = B
    }
}

是否有任何语言构造(由上述伪代码中的 THISCLASS 表示)静态评估泛型实例化的类?

它可能看起来不多,但如果我必须重复上面的通用实例化,比如 20 个类,那么每次都必须用相应的 A 替换 THISCLASS 是另一个错误来源。

标签: c#generics

解决方案


Type t = MethodBase.GetCurrentMethod().DeclaringType;将使您在静态方法/构造函数中获得当前类型。之后,您可以获取方法信息SomeGenericMethod并使用MakeGenericMethod以及在调用它之前需要的任何其他类型参数来调用它。


推荐阅读