0

我有一个实现IExtenderProvider. 一个属性包含对于用户在其项目中使用的组件的每个实例都应该相同的设置。(并且在每个实例中也可编辑)

在设计时通过多个用户控件实例共享信息的常用方法是什么?手动将其写入app.config是没有解决方案的,因为我需要一个用于此设置的 GUI。

提前致谢

芬尼克斯

如果仅在设计期间需要该属性,则提到的静态属性效果很好,但在我的情况下,在运行时也需要该属性。在这种情况下,每个实例都将在其设计时设置的值设置为静态属性。这意味着该值取决于实例的初始化顺序。

例子:

在设计时:

将组件添加到表单 1 并将值设置为“Form1”

将组件添加到表单 2 并将值设置为“Form2”

现在,对于这两个实例,设计器中的值都是“Form2”,但在运行时,如果加载了两个表单,则该值总是作为最后一个加载的那个。

这是因为设计者不会更改实例的初始化值。

4

1 回答 1

0

要创建一个对所有实例每个实例都通用的属性,您可以执行以下操作:

class MyObject
{
    // static members are common to all instances
    static string DefaultProperty1 = "Some Default";

    private string _Property1;
    public string Property1
    {
        get
        {
            // If the backing field is NULL, return the default
            if (_Property1 == null)
                return DefaultProperty1;
            // Otherwise, return the per-instance value
            return _Property1;
        }
        set { _Property1 = value; }
    }
}

如果您希望它可以更改, DefaultProperty1 也可以是一个属性。

于 2012-11-02T18:22:39.850 回答