C#分解通用方法中的类型参数(如果它是嵌套类)

安妮

我正在尝试将嵌套类传递给通用方法以评估其所有类,例如

SharedClass.FindParentClass<GrandParent.Parent.Child>();

通用方法:

public void FindParentClass<T>() where T: ISomeInterface, new()
{
  //Break down T to all of its classes
}

我想避免这样做:

SharedClass.FindParentClass<GrandParent,GrandParent.Parent,GrandParent.Parent.Child>();

适用于上述代码的通用方法:

public void FindParent<TGrandParent, TParent, TChild>() where TGrandParent : IGrandParent, new()
                                                         where TParent : IParent, new()
                                                          where TChild : IChild, new()
{
 //all I have to do now is place the type parameters there where I want them    
}

我不允许更改用作类型参数的类,因此每个类都继承一个不同的接口,并具有一个公共的无参数构造函数。

安妮

为了按照我的预期方式工作,我不得不编写另一个(私有)通用方法来接受所有三个类型参数:

private void PerformWith<GrandParent, Grandparent.Parent, GrandParent.Parent.Child>()
{
         //Perform something
}

因此,在我的第一个通用方法中,我将使用反射来:

  1. 确定所有父类型-使用GetTypeInfo()。ReflectedType
  2. 要获取新方法,请使其通用并调用它。

看起来像这样:

public void FindParentClass<T> where T: ISomeInterface, new()
{
   var parentClass = typeof(T).GetTypeInfo().ReflectedType;
   var grandparentClass = parentClass.GetTypeInfo().ReflectedType;

   var method = MethodBase.GetCurrentMethod().DeclaringType.GetMethod("PerformWith", BindingFlags.NonPublic());
   var genericMethod = method.MakeGenericMethod(new Type[] { grandparentClass, parentClass, typeof(T) });
   genericMethod.Invoke(null, null);
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在嵌套多态值中包含通用类型参数的用法

来自分类Dev

如果使用通用类型参数声明了一个类,并且在未指定类型的情况下实例化了该类,则它是否默认为Object?

来自分类Dev

C#中的通用方法

来自分类Dev

给定静态方法,因为它是c#中的动态类型和参数

来自分类Dev

限制通用子类方法可以在C#中接受的类型

来自分类Dev

类中没有通用引用的通用类型方法

来自分类Dev

Scala:引用类的嵌套类型,它是泛型的类型参数

来自分类Dev

推断通用类中的参数类型,这些参数类型是所提供参数的嵌套通用类型

来自分类Dev

用户定义的类的C#通用类型

来自分类Dev

在C#中应为通用接口基本类型时,如何传递方法参数?

来自分类Dev

在C#中解析通用方法参数

来自分类Dev

使用接口作为通用类的类型参数,但在C#中使用“类”的限制

来自分类Dev

使用嵌套在通用类中的类作为C#中的类型参数

来自分类Dev

如果它是odoo9中的通用类,则要继承哪个基类

来自分类Dev

在C#中将通用类型参数转换为特定类型

来自分类Dev

C#通用方法,可以从表达式参数推断其类型参数

来自分类Dev

C#反射-从基类中获取父类的通用参数类型

来自分类Dev

多类的C#通用参数

来自分类Dev

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

来自分类Dev

通用方法参数的类型

来自分类Dev

在实现通用接口C#的通用类中修改值类型

来自分类Dev

方法参数的通用类型

来自分类Dev

通用类C#方法中的特例

来自分类Dev

限制通用子类方法可以在C#中接受的类型

来自分类Dev

C#扩展方法中的可空嵌套类型

来自分类Dev

缺少通用类的类型参数

来自分类Dev

使用嵌套在通用类中的类作为C#中的类型参数

来自分类Dev

如果它是odoo9中的通用类,则要继承哪个基类

来自分类Dev

类型列表中的C#通用方法返回类型

Related 相关文章

  1. 1

    在嵌套多态值中包含通用类型参数的用法

  2. 2

    如果使用通用类型参数声明了一个类,并且在未指定类型的情况下实例化了该类,则它是否默认为Object?

  3. 3

    C#中的通用方法

  4. 4

    给定静态方法,因为它是c#中的动态类型和参数

  5. 5

    限制通用子类方法可以在C#中接受的类型

  6. 6

    类中没有通用引用的通用类型方法

  7. 7

    Scala:引用类的嵌套类型,它是泛型的类型参数

  8. 8

    推断通用类中的参数类型,这些参数类型是所提供参数的嵌套通用类型

  9. 9

    用户定义的类的C#通用类型

  10. 10

    在C#中应为通用接口基本类型时,如何传递方法参数?

  11. 11

    在C#中解析通用方法参数

  12. 12

    使用接口作为通用类的类型参数,但在C#中使用“类”的限制

  13. 13

    使用嵌套在通用类中的类作为C#中的类型参数

  14. 14

    如果它是odoo9中的通用类,则要继承哪个基类

  15. 15

    在C#中将通用类型参数转换为特定类型

  16. 16

    C#通用方法,可以从表达式参数推断其类型参数

  17. 17

    C#反射-从基类中获取父类的通用参数类型

  18. 18

    多类的C#通用参数

  19. 19

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

  20. 20

    通用方法参数的类型

  21. 21

    在实现通用接口C#的通用类中修改值类型

  22. 22

    方法参数的通用类型

  23. 23

    通用类C#方法中的特例

  24. 24

    限制通用子类方法可以在C#中接受的类型

  25. 25

    C#扩展方法中的可空嵌套类型

  26. 26

    缺少通用类的类型参数

  27. 27

    使用嵌套在通用类中的类作为C#中的类型参数

  28. 28

    如果它是odoo9中的通用类,则要继承哪个基类

  29. 29

    类型列表中的C#通用方法返回类型

热门标签

归档