首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有泛型类型参数的DynamicMethod

具有泛型类型参数的DynamicMethod
EN

Stack Overflow用户
提问于 2009-04-25 09:51:50
回答 2查看 1.6K关注 0票数 8

可以使用泛型类型参数定义DynamicMethod吗?MethodBuilder类具有DefineGenericParameters方法。DynamicMethod有对应的产品吗?例如,是否可以使用DynamicMethod创建具有类似blow的签名的方法?

代码语言:javascript
复制
void T Foo<T>(T a1, int a2)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 12:35:17

实际上有一种方法,它不是完全通用的,但你会明白的:

代码语言:javascript
复制
public delegate T Foo<T>(T a1, int a2);

public class Dynamic<T>
{
    public static readonly Foo<T> Foo = GenerateFoo<T>();

    private static Foo<V> GenerateFoo<V>()
    {
        Type[] args = { typeof(V), typeof(int)};

        DynamicMethod method =
            new DynamicMethod("FooDynamic", typeof(V), args);

        // emit it

        return (Foo<V>)method.CreateDelegate(typeof(Foo<V>));
    }
}

你可以这样称呼它:

代码语言:javascript
复制
Dynamic<double>.Foo(1.0, 3);
票数 3
EN

Stack Overflow用户

发布于 2009-04-25 11:59:21

这似乎是不可能的:正如您所看到的,DynamicMethod没有DefineGenericParameters方法,并且它从其MethodInfo基类继承了MakeGenericMethod,而后者只是抛出了NotSupportedException

有几种可能性:

  • 自己使用AppDomain.DefineDynamicAssembly
  • Do泛型定义整个动态程序集,方法是为每组类型参数生成一次相同的
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/788618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档