Winform应用程序接口"参数类型不能分配给参数类型"

时间:2014-07-02 09:00:15

标签: c# .net winforms

我有一个Winform应用程序,我想为客户实现某种接口,因此如果需要,客户稍后可以更改部分代码。我相信我的方法是错误的,因为我重新编译Winform应用程序后在Visual Studio中出现错误。错误是“参数类型MyClass不能分配给参数类型MyClass”,但我仍然能够重新编译它。我担心这会在以后破裂......

这是我到目前为止实施的方式:

  • 在我的winform应用程序中,我创建了一个带有虚方法的抽象类。
  • 我正在为实现此抽象类的客户“发布”一个开源项目dll程序集,并且该方法在抽象类中调用基本方法。如果客户想要更改方法,他们只需自己实现。
  • 然后在我的winform应用程序中引用并实现此开源项目。

当客户希望更改他们实现方法的方法时,重新编译dll并将新的dll替换为我随程序集分发的dll。

我的winform应用程序拥有自己的强名称,开源项目拥有自己的强名称。

但是,当我在引用开源项目后重新编译我的Winform应用程序时,我收到此错误:“参数类型MyClass不能分配给参数类型MyClass”。我仍然可以重新编译该项目。但是我担心实施会有一些严重的缺陷,并会在以后破坏。特别是因为我已经实现了WyBuild,我将为Winform应用程序分发更新。

我需要为客户提供一种方法来更改应用程序中的某些方法,而无需访问所有源代码。如果我的实施错误,你怎么能实现这个?你的建议是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我说这种做法本身就是一种糟糕的方式。对我而言,这听起来非常容易出错,而且你要表明自己对此感觉不好。如果是这样,那么就不要这样做。

确实有一些其他解决方案可以理解,但鉴于您的描述,我可能会按照以下方式进行,这将保留您的初衷。

查看微软的Managed Extensibility Framework(MEF),它可以通过多种方式为您提供帮助。

简单地说,它会像这样工作:

  • 您定义客户必须实施的interface
  • 客户端然后创建一个完全实现interface的程序集,并将其置于由MEF监控的位置
  • MEF自动加载组件(无需重新发明轮子)

MEF让您可以控制自己的工作方式。比如,它应该只允许加载或同时实现该接口的多个程序集,或者只应在应用程序的开头查找插件或在其完整生命周期内监视插件位置。

通过这种方式,你可以摆脱你在这里组装的自定义解决方案,而是使用一个成熟的框架来提供一个标准化的方法来完成它。只要看一下网上的一些教程,就很容易进入。