3

我有一个数据驱动的映射应用程序,我需要在其中将自定义功能实现为插件。我需要执行的自定义方法的名称也将在映射数据中。我知道我可以使用 invoke 命令调用该方法;但是,如何确保每种方法都有适当的签名?

4

3 回答 3

1

首先,我认为您不应该为被覆盖的方法允许任意名称 - 只需定义一个接口并保持简单。

您可以使用一个方法定义一个接口,该方法返回一个委托给执行该工作的方法。

否则,您只需要使用反射来获取映射方法的 MethodInfo 并在运行时检查它是否具有正确的签名。

于 2009-08-01T23:03:01.613 回答
1

通常,在开发插件架构时,您会使用您将在插件上调用的方法定义一个接口。该插件是实现接口所必需的。当你加载它时,你将它转换为接口(如果它没有实现它,这将失败)并在你的代码中使用它作为接口。如果插件的行为更通用,您只需更通用地定义接口,例如使用配置来建立插件的参数,然后使用不带参数的简单方法来调用插件的功能。我认为您会发现使用预定义的界面会更容易,并且它不应该限制您太多。

于 2009-08-01T23:05:35.493 回答
1

您将不得不使用反射。

您首先必须调用GetMethod()方法才能获取相关方法的MethodInfo对象。

然后您需要使用该.GetParameters()方法来获取该方法的参数,然后您需要将这些参数与您期望该方法具有的参数进行比较。

于 2009-08-01T23:06:01.077 回答