是否可以创建一个方法,将任何方法(不管它的参数)作为参数?该方法还有一个params参数,然后获取参数方法的所有参数.
基本上我想要的是这样的:
public void CallTheMethod(Action<int> theMethod, params object[] parameters)
Run Code Online (Sandbox Code Playgroud)
但是对于任何方法,不仅仅是采用int的方法.
这样的事情可能吗?
谢谢
是的,有代表:
public object CallTheMethod(Delegate theMethod, params object[] parameters)
{
return theMethod.DynamicInvoke(parameters);
}
Run Code Online (Sandbox Code Playgroud)
但请参阅Marc Gravell对您问题的评论 :)
好吧,你可以通过非特定的
Delegate,但是DynamicInvoke是sloooooowwwwww(相对而言)
这是可能的,但不应该做什么.
这就是我要做的:
public void CallTheMethod(Action toCall)
Run Code Online (Sandbox Code Playgroud)
你可能会去"嗯".基本上,它让用户做的是:
CallTheMethod(() => SomeOtherMethod(with, some, other, parameters));
Run Code Online (Sandbox Code Playgroud)
但是,如果您希望它返回一个类型,则涉及泛型:
public void CallTheMethod<T>(Func<T> theMethod)
Run Code Online (Sandbox Code Playgroud)
您可以在该类型上放置通用约束,随意执行任何操作,等等.
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |