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

本文关键字:参数传递 方法 我可以 | 更新日期: 2023-09-27 18:15:30

我正在开发几个生成字符串的插件方法,并将其传递回我的主方法。从这里,我可以得到一个序列号。然而,我想避免将插件集成到我的主程序中——基本上,任何迫使我以任何方式改变我的主程序来识别这个插件的东西都是禁止的。

所以-在我的主程序中,我生成一个字符串,然后将它与其他匹配的字符串进行匹配以计算出序列号。问题是我需要知道这个字符串的格式,这样我就知道在哪里输入这个数字。

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

我发现了这个问题,但这似乎只在同一个程序中

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

在c#中,你可以将一个方法作为另一个方法的参数传递,只要它返回接收者方法所期望的东西。因此,给定如下:

public int Foo(){ ... }

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

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

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

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

首先,你不需要传递这个方法。您可以将该方法设置为公共,并在相同命名空间中的另一个程序中访问,例如:这里的对象应该是定义方法的类

你可以包含函数的返回值作为一个参数,而调用如果那是你正在尝试的(如:- testapp(Square(x)),如果参数的类型是相同的方法的返回类型。在另一种情况下,委托可能很有用。