C# 动态对象:获取子泛型类型并将其提供给另一个方法

C# 动态对象:获取子泛型类型并将其提供给另一个方法,c#,generics,dynamic-dispatch,C#,Generics,Dynamic Dispatch,我有一个方法,它基本上接收一个动态对象。这是由于一个动态调度,而不是讨论为什么我在这里有一个动态输入 我知道这个动态对象表示一个类型ASpecialClass,其中T在编译时是未知的。有没有办法提取T类型并将其交给另一种方法 比如: 这里有两件事: 有没有办法提取参数的类型T? 是否可以将其提供给另一个通用方法? 谢谢你回答问题1: static IEnumerable<Type> GetGenericTypeArgument(dynamic inputObject) {

我有一个方法,它基本上接收一个动态对象。这是由于一个动态调度,而不是讨论为什么我在这里有一个动态输入

我知道这个动态对象表示一个类型ASpecialClass,其中T在编译时是未知的。有没有办法提取T类型并将其交给另一种方法

比如:

这里有两件事:

有没有办法提取参数的类型T? 是否可以将其提供给另一个通用方法? 谢谢你回答问题1:

static IEnumerable<Type> GetGenericTypeArgument(dynamic inputObject)
    {
        var genType = inputObject.GetType();
        return genType.GetGenericArguments();
    }
对问题2的答复:

您需要使用反射通过传递答案1中提供的泛型参数来调用泛型方法。
这已经得到了回答@

我已经找到了这两个答案,希望它们能有所帮助。非常感谢你回答问题的第一部分,这就是我要找的。关于第2部分,有没有避免反射的方法?如果不想使用反射,可以始终使用Linq/Lambda表达式。对于如何做到这一点,有一个答案是“好”。使用lambda表达式是否更有效?是的,lambda表达式比反射更有效。阅读
static IEnumerable<Type> GetGenericTypeArgument(dynamic inputObject)
    {
        var genType = inputObject.GetType();
        return genType.GetGenericArguments();
    }