【发布时间】:2015-06-02 07:58:24
【问题描述】:
我们正在为我们的应用程序实现一个即插即用模块,用户可以在运行时加载和卸载所需的类库。所以我决定使用 MEF 和类库的卷影复制。
这里的事情是每个类库可能有不同的配置属性,需要用户设置。 我的主应用程序不知道类库中存在的配置。
现在的问题是,当我尝试将加载了类库的应用程序配置文件从一个应用程序域转移到另一个应用程序域时。
没有 MEF,我刚刚从类库中返回 Settings.Default,并在我们的主应用程序中使用它来编辑设置。使用 MEF 和卷影复制,它似乎不起作用,因为
- 需要双方都知道对象类型。
- 我无法在设置文件上实现
MarshalByRefObject,因为 设置文件已经在扩展ApplicationSettingsBase是一个抽象类,c#不支持多重继承。
目前我正在创建一个将所有属性保存为字符串的类,并根据此类内容在我的主应用程序中创建一个 GUI。
public class ExtensionModuleConfiguration : MarshalByRefObject
{
public string Name { get; set; }
public string Value { get; set; }
public List<string> Options { get; set; }
public UIElements ToolUIElement { get; set; }
}
public enum UIElements
{
ComboBox,
TextBox
}
我必须说这不是最好的解决方案。 有人可以建议一种更好的方法来在 MEF 中设置类库的配置吗?
【问题讨论】: