我可以将方法作为参数传递吗?

时间:2015-10-01 07:01:45

标签: c# methods parameters

我正在开发几个生成字符串的插件方法,并将其传递回我的main方法。从这里,我可以得出一个序列号。但是,我想避免将插件集成到我的主程序中 - 基本上任何迫使我以任何方式更改主程序以识别此插件的内容都是禁止的。

所以 - 在我的主程序中,我生成一个字符串,然后将其与其他匹配的字符串匹配以找出序列号。麻烦的是我需要知道这个字符串的格式,所以我知道在哪里输入这个数字。

我在想可能传递一个知道这个字符串的匹配函数的方法,但是我不确定如何将一个方法从一个程序传递到另一个程序。

我发现了this个问题,但这只是在同一个程序中。

2 个答案:

答案 0 :(得分:0)

在C#中,您可以将方法作为另一个方法的参数传递,只要它返回收件人方法所期望的内容即可。因此,鉴于此:

public int Foo(){ ... }


public void Bar(int i) { ... }

您可以这样做:...Bar(this.Foo());

但是,我认为你所追求的实际上是delegates,它们本质上是函数指针。这将允许您从其他方法调用委托所指向的方法。

作为旁注,您可以考虑查看Strategy Design Pattern。此模式允许您从根本上确定在运行时调用哪个行为(逻辑)。

答案 1 :(得分:0)

首先,对于您的情况,您不需要传递方法。您可以将方法设置为public并在同一名称空间中的另一个程序中访问,如: - ClassObject.Method(); ...此处对象应该是定义方法的类

如果param的类型与方法的返回类型相同,你可以在调用时将函数的返回值包含为参数,如果你正在尝试的那样(例如: - testapp(Square(x))。在另一个案例中代表们可能很有用。