我正在开发一个使用插件的软件。这是Building Patterns。基金会在dlls中可能的解决方案一个接一个。在建筑物基础的物业处理中,可以从基础类型列表中进行选择。 字符串列表的制作如下所示:
private string kindOf;
[TypeConverter(typeof(FileNames4Foundation)), CategoryAttribute("Foundation"), Description("Foundation pattern")]
public string KindOf
{
get { return kindOf; }
set
{
kindOf = value;
Update(); //update foundation
RegistryWorks.WriteString("Foundation.KindOf", kindOf); //store setting up to the registry
}
}
TypeConverter看起来像这样:
public class FileNames4Foundation : StringConverter
{
public string[] GetNames()
{
List<string> names = Utils.GetNames("\\RibbonPages\\Polygon\\Pattern\\Foundation\\", "dll");
return names.ToArray();
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
List<string> names = Utils.GetNames("\\RibbonPages\\Polygon\\Pattern\\Foundation\\", "dll");
return new StandardValuesCollection(GetNames());
}
}
此解决方案绝对正确。
现在我必须改变程序系统,如下所示。到目前为止,程序代码中修复了不同的建筑类型。在新系统中,建筑类型将从插件加载到主程序中。架构如下:
Main program
- Mobil type facility plugin
-
-
- Polygon type facility plugin
- Foundation
- Bar plugin
- Foot plugin
- Slant plugin
- Slab
- Cantilever plugin
- Normal plugin
- Roof
- Mansard plugin
- Pitched plugin
- Tower type facility plugin
-
-
更改导致插件处理列出的属性插件不起作用。在调试中,我们可以看到程序直到“StringConverter”部分才运行。 我想如果读取插件的属性也适用于新系统。 提前感谢您的帮助!