分类'插件'DLL的方法

时间:2011-09-26 14:17:16

标签: c# configuration configuration-files

在我的团队中,我们正在创建一个.NET(WinForms)应用程序,它将其他程序集(DLL)作为可插入组件加载。

这些操作需要归类为产品类别,以便以有条理的方式在GUI中显示。

我们刚刚开始实现此功能,因此对于初学者,我们会保留一个主.xml文件,将不同的assmeblies映射到类别。

此过程很脆弱,容易出现许多错误,此功能的最终版本应自动创建此映射(不知何故)。

我们正在寻找的是现在(以及将来)映射不同DLL的一些方法,并保持所有这些同步。

我们提出的一些建议是:

  1. 属性 - 用一些属性标记每个程序集,然后运行一些 构建期间自定义工具生成某种映射文件, 根据这些属性。

    这个过程可行,但这意味着静态编译 类别名称进入程序集本身,使其无法进行 安装后在客户端计算机上动态更新。

  2. 配置文件 - 添加程序集的配置文件(a 实践这很少用于我相信)并包含所需 信息以某种形式存在。

  3. 这些主要是我考虑的两个选项,一个是静态的,另一个是动态的(在部署应用程序后可以更新)。

    虽然我们没有预见到任何变化,但要求这个映射是动态的,我不知何故觉得静态编译这个属性是错误的。

    是否还有其他合适的选择来满足这样的要求? 此外,还有其他优点/缺点我没有考虑过所提出的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您应该在这里提出的第一个问题是:

  • 谁是必须能够更改程序集< - >类别映射的人?
  • 你的每个插件程序集都可以与任意类别相关联,还是没有意义/可能是错误的原因?
  • 在安装更新期间发生类别更改是否足够?

要构建到程序集中的元数据是正确的,如果每个程序集在某个时间点只能属于已定义的类别(或定义的类别列表),并且如果有人可能会导致运行时错误以错误的方式更改类别。稍后更新类别映射并非不可能,只要您安装新版本的组件,就可以进行更新。

如果其他人应该能够更改实际的映射,而不必安装新版本的软件,则将映射放入单独的配置文件或XML文件中是正确的选择。这可能导致需要一个用户友好的对话框来以一种不那么容易出错的方式更改映射。