1
我觉得我非常接近解决这个问题,并阅读了大量文章和现有问题。使用参数安全调用多次调用通用方法(运行时返回类型)的最佳方法
我有这样的方法:
public T DoStuff(object arg1, object arg2)
{
/* Do stuff and return a T */
}
,我需要能够将此方法传递给另一个类回调的目的。
但是,当这个其他类回调时,它将使用只在运行时才知道的不同预期返回类型。
例如为:
public void SomeMethod(MethodInfo m, ref object caller)
{
MethodInfo callback = m.MakeGenericMethod(new Type[] { runtimeType });
callback.Invoke(caller, new [] { arg1val, arg2val });
}
/* DoStuff() will make a call to SomeMethod() passing
* itself (the method and the object) */
然而,代替此,我想能够
- 通行证仅单个回调对象(即一个委托或函数功能<>)来的someMethod。
- 能够为通用调用适当地修改此对象。
- 具有类型安全参数的呼叫,因为我会用代理/ Func <>。
我已经找到适合每个人的方法,但没有涵盖所有这些方法。
这可能吗?
是的,你是对的,好点。我觉得肮脏使用这种反射,但我看不到另一种将数据运行时解析为任意代码对象的方式。有一段时间我很担心调用其他泛型方法,因为我不会有一个实际的“T”类型来工作,但看到我正在通过反射来调用它们,这不是一个大问题,它们甚至可能是以类似的方式重写。谢谢! – 2009-09-21 18:43:43