0

我有一个方法,它基本上接收一个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. 是否可以将其提供给另一种通用的方法?

谢谢

4

1 回答 1

0

问题 1 的答案:

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

问题 2 的答案:

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

于 2015-02-02T11:11:29.233 回答