c#中的定义/实现问题

时间:2010-08-11 22:28:06

标签: c# plugins runtime implementation definition

我正在尝试创建这样的插件架构; IPlugin :所有插件必须实现的界面 NormalPlugin :正常的插件 ComplexPlugin :一个插件,除了实现基本方法之外,还有一些自定义方法 HostApp :知道IPlugin是什么的应用。

目前主机应用程序将在编译时具有ComplexPlugin,并将动态加载NormalPlugin。那是因为主机需要在ComplexPlugin中有定义,所以它可以调用它的自定义方法 1)有没有更好的方法来实现这一目标?因为在编译时添加一些插件作为主机应用程序的引用看起来有点蹩脚。

2)我尝试过使用:

public interface IPlugin
{
   object CallCustomMethod(string methodName, object[] parameters);
}
但是,如果CallCustomMethod返回复杂类型,应用程序将需要知道要转换的复杂类型。 提前谢谢

1 个答案:

答案 0 :(得分:0)

如果应用程序从不调用ComplexPlugIn的自定义方法而不是通过CallCustomMethod函数,那么在我看来,您不应该需要转换为ComplexPlugIn。

IPlugIn foo =(IPlugIn)myComplexObject.CallCustomMethod(“GenerateNewComplexPlugIn”,new object [] {0});

foo.CallCustomMethod(“AnotherComplexMethod”,null);