需要帮助在C#中定义接口

时间:2009-08-01 22:49:57

标签: c# interface late-binding

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你必须使用反射。

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

然后你需要使用.GetParameters()方法来获取方法的参数,然后你需要将它们与你期望的方法进行比较。