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

时间:2015-02-02 10:36:41

标签: c# generics dynamic-dispatch

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

我知道这个dynamic对象代表一个类型ASpecialClass<T>,其中T在编译时是未知的。有没有办法提取T类型并将其提供给另一种方法?

像:

public void DoSomething(dynamic inputObject)//At this point, I know that it implements ASpecialClass<T>, but I don't know what is the T type
{
    extracType(InputObject);
    CallOtherMethod<With_the_extracted_Type>(inputObject);
}

这里有两件事:

  1. 有没有办法提取参数的类型T
  2. 是否可以将其提供给另一种通用的方法?
  3. 谢谢

1 个答案:

答案 0 :(得分:0)

回答问题1:

static IEnumerable<Type> GetGenericTypeArgument(dynamic inputObject)
    {
        var genType = inputObject.GetType();
        return genType.GetGenericArguments();
    }

回答问题2:

您需要使用反射来通过传递答案1中提供的泛型参数来调用泛型方法。 已经回答@ How do I use reflection to call a generic method?