使用泛型 T 的 DefineMethod

DefineMethod with generic T

The type or namespace name 'T' could not be found

如何在参数中使用 T

Type[] tparams = { typeof(Expression<Func<T, object>>) };
MethodBuilder methodId = tbuilder.DefineMethod("Id", MethodAttributes.Public, typeof(IdentityPart), tparams);

代码必须是通用方法class:

的一部分

方法:

public void Method<T>()
{
    // code snnipet
    Type[] tparams = { typeof(Expression<Func<T, object>>) };
}

Class:

public class Class<T>
{
    public void Method()
    { 
        // code snnipet
        Type[] tparams = { typeof(Expression<Func<T, object>>) };
    }
}

您可以使用辅助方法作为填充类型参数的工具。假设您希望 T 成为一个名为 MyVerySpecialType:

的 class
public static class Helper
{
    public static Type[] TypeArrayReturnerWithGeneric<T>()
    {
        return new Type[] { typeof(Expression<Func<T, object>>) };
    }
}

那么你可以这样做:

MethodBuilder methodId = tbuilder.DefineMethod("Id", MethodAttributes.Public, typeof(IdentityPart), Helper.TypeArrayReturnerWithGeneric<MyVerySpecialType>());