动态对象:获取子泛型类型并提供给另一个方法
Dynamic object: Get the sub generic type and provide it to another method
我有一个方法,基本上接收一个 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);
}
这里有两件事:
- 有没有办法提取参数的类型
T
?
- 是否可以将其提供回另一个通用方法?
谢谢
问题 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?
我有一个方法,基本上接收一个 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);
}
这里有两件事:
- 有没有办法提取参数的类型
T
? - 是否可以将其提供回另一个通用方法?
谢谢
问题 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?