【发布时间】:2011-07-26 10:18:30
【问题描述】:
我开始在 .Net 中使用动态对象,但我不知道该怎么做。
我有一个继承自 DynamicObject 的类,我重写了 TryInvokeMember 方法。
例如
class MyCustomDynamicClass : DynamicObject
{
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
// I want to know here the type of the generic argument
}
}
在该方法中,我想知道调用中泛型参数的类型(如果有的话)。
例如 如果我调用以下代码,我想在我的动态对象的重写方法中获取 System.Boolean 和 System.Int32 的值
dynamic myObject = new MyCustomDynamicClass();
myObject.SomeMethod<bool>("arg");
myObject.SomeOtherMethod<int>("arg");
目前,如果我在被覆盖的方法中放置一个断点,我可以获得被调用方法的名称(“SomeMethod”和“SomeOtherMethod”,以及参数的值,但不是泛型类型)。
我怎样才能得到这些值?
谢谢!
【问题讨论】:
-
您很可能需要使用反射查找方法。 MethodInfo 提供对泛型类型参数的访问。
-
问题是方法不存在,我只是可以访问binder对象,它有一个CallInfo属性,没有任何泛型信息。
-
你知道,我已经尝试了一段时间的样本,但我也找不到通用信息在哪里。这实际上是一个非常好的问题。
标签: c# generics dynamic dynamicobject