插件中的StringConverter

时间:2016-03-14 12:55:57

标签: c# plugins properties cad

我正在开发一个使用插件的软件。这是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”部分才运行。 我想如果读取插件的属性也适用于新系统。 提前感谢您的帮助!

0 个答案:

没有答案