我需要能够通过任意方法的一些功能myFunction
:如何将任意方法(或委托)作为参数传递给函数?
void myFunction(AnyFunc func) { ... }
应该可以与其他静态的,例如,公共或私有方法,甚至委托执行它:
myFunction(SomeClass.PublicStaticMethod);
myFunction(SomeObject.PrivateInstanceMethod);
myFunction(delegate(int x) { return 5*x; });
通过的方法可能有任何数量的参数和任何返回类型。还应该可以通过反射来了解myFunction
中的实际参数数量及其类型。 myFunction
定义中的AnyFunc
将如何适应这些要求?可以接受myFunction
的几个重载版本。
如果它有参数,您希望传递给该方法的内容是什么?这听起来像你应该将任何方法转换为无参数/无效返回(又名'Action'),然后再传递给此方法。 – Servy 2013-04-10 16:25:02
'myFunction'将分析该函数的参数,根据某个外部数据库检查它们,并用必要的值调用它,否则将失败,如果没有找到数据库中的匹配条目。 – 2013-04-10 16:26:40
这是一个*非常*令人担忧的设计,其中你基本上把代码当作数据来对待。你应该考虑重新设计这样的代码是静态的。 – Servy 2013-04-10 16:27:32