带有通用类型参数的导入方法

MY_G

我目前正在努力向现有API添加新功能。假设我有一个PerformTediousOperation带有通用类型参数的方法:

void PerformTediousOperation<T>()

此方法在Operator内部,可以这样调用:

operatorInstance.PerformTediousOperation<T>()

Operator每当用户使用Operable属性标记类型时,我都想创建一个新实例并调用此方法

目前,这是我遇到的问题:

MethodReference performTediousOperationMethodReference =
    new MethodReference(
        name: "PerformTediousOperation",
        returnType: moduleDefinition.TypeSystem.Void,
        declaringType: operatorTypeReference)
    {
        HasThis = true
    };

发出的IL代码(在C#中)很简单PerformTediousOperation();

如何解决此问题,使发出的代码改为PerformTediousOperation<T>()T在运行时将在哪里确定?

请让我知道是否需要更多信息。

MY_G

这是如何使用以下方法生成具有泛型类型参数的方法的示例MonoCecil

MethodReference performTediousOperationMethodReference =
    new MethodReference(
        name: "PerformTediousOperation",
        returnType: moduleDefinition.TypeSystem.Void,
        declaringType: operatorTypeReference)
    {
        HasThis = true
    };

var genericParameter = new GenericParameter("T", performTediousOperationMethodReference);
performTediousOperationMethodReference.GenericParameters.Add(genericParameter);

GenericInstanceMethod performTediousOperationInstanceMethod = 
    new GenericInstanceMethod(performTediousOperationMethodReference) 
        {
            GenericArguments = { moduleDefinition.ImportReference(typeof(int)) }
        };

这产生了PerformTediousOperation<int>()

您可以将任何其他TypeReference实例传递给该GenericArguments字段,并且输出将相应地有所不同。例如,如果您moduleDefinition.ImportReference(typeof(string))改为传入,则输出为PerformTediousOperation<string>()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

覆盖并带有通用类型参数

来自分类常见问题

在带有通用参数的通用方法中使用Spring RestTemplate

来自分类Dev

通用方法参数的类型

来自分类Dev

方法参数的通用类型

来自分类Dev

带有参数的通用Func

来自分类Dev

Mockito验证带有通用集合参数的方法调用

来自分类Dev

带有静态方法的Typescript通用类构造函数参数

来自分类Dev

通用类型代码中是否有类型参数的命名约定(带有传统样式)

来自分类Dev

通用类型代码中是否有类型参数的命名约定(带有风味)

来自分类Dev

Swift扩展中具有通用类型参数的方法

来自分类Dev

通用方法类型参数声明

来自分类Dev

通用方法类型参数确定

来自分类Dev

Java通用方法类型参数

来自分类Dev

检查方法参数的通用类型

来自分类Dev

通用类型作为方法参数

来自分类Dev

通用方法类型参数声明

来自分类Dev

Java通用方法类型参数

来自分类Dev

是否可以使接口方法返回带有C#中通用类型参数的另一个方法的类型?

来自分类Dev

将带有参数的函数作为参数传递并返回通用类型

来自分类Dev

使用FakeItEasy,可以创建带有通用类型参数的类型的虚拟对象

来自分类Dev

带有导入类方法的Python类型提示

来自分类Dev

从参数动态推断通用方法的类型参数

来自分类Dev

通用方法返回类型作为类型参数

来自分类Dev

当值类型作为带有接口约束的通用参数传递时是否装箱?

来自分类Dev

如何在Swift中重新分配带有通用类型参数的函数?

来自分类常见问题

Dotty无法使用抽象类型来推断带有类型参数特征的通用Scala函数的结果类型

来自分类Dev

Dotty无法使用抽象类型来推断带有类型参数特征的通用Scala函数的结果类型

来自分类Dev

最好有一个带有参数的通用方法还是多个方法?

来自分类Dev

带有通用参数的to_string

Related 相关文章

  1. 1

    覆盖并带有通用类型参数

  2. 2

    在带有通用参数的通用方法中使用Spring RestTemplate

  3. 3

    通用方法参数的类型

  4. 4

    方法参数的通用类型

  5. 5

    带有参数的通用Func

  6. 6

    Mockito验证带有通用集合参数的方法调用

  7. 7

    带有静态方法的Typescript通用类构造函数参数

  8. 8

    通用类型代码中是否有类型参数的命名约定(带有传统样式)

  9. 9

    通用类型代码中是否有类型参数的命名约定(带有风味)

  10. 10

    Swift扩展中具有通用类型参数的方法

  11. 11

    通用方法类型参数声明

  12. 12

    通用方法类型参数确定

  13. 13

    Java通用方法类型参数

  14. 14

    检查方法参数的通用类型

  15. 15

    通用类型作为方法参数

  16. 16

    通用方法类型参数声明

  17. 17

    Java通用方法类型参数

  18. 18

    是否可以使接口方法返回带有C#中通用类型参数的另一个方法的类型?

  19. 19

    将带有参数的函数作为参数传递并返回通用类型

  20. 20

    使用FakeItEasy,可以创建带有通用类型参数的类型的虚拟对象

  21. 21

    带有导入类方法的Python类型提示

  22. 22

    从参数动态推断通用方法的类型参数

  23. 23

    通用方法返回类型作为类型参数

  24. 24

    当值类型作为带有接口约束的通用参数传递时是否装箱?

  25. 25

    如何在Swift中重新分配带有通用类型参数的函数?

  26. 26

    Dotty无法使用抽象类型来推断带有类型参数特征的通用Scala函数的结果类型

  27. 27

    Dotty无法使用抽象类型来推断带有类型参数特征的通用Scala函数的结果类型

  28. 28

    最好有一个带有参数的通用方法还是多个方法?

  29. 29

    带有通用参数的to_string

热门标签

归档