c# – 如何防止Windows窗体设计器为属性生成默认值赋值?

我有一个用户控件,其属性是引用类型. Windows窗体设计器不断生成将属性的初始值赋给null的代码.我怎么能阻止这个?

我尝试添加Reset和ShouldSerialize方法 – 重置有一个空体,而ShouldSerialize总是返回false – 但这不起作用.我还应用了BrowsableAttribute并将其设置为false.

编辑:

属性的类型是同一项目中的一个类.它不是一个组件或控件,只是一个继承自Object的普通类.此外,属性的setter使用属性的值作为其参数调用方法,并且该方法不接受null作为有效参数.

例:

public MyClass Property1 
{
   get { return _property1; }
   set
   {
        _property1 = value;
        SomeMethod(value); // This method throws ArgumentNullException;
   }
}

注意:我确实认识到get和set方法可能更合适.

最佳答案
Murky,我可以使用一个片段.告诉设计师它不应该序列化属性的值:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public Image Aardvark { get; set; }

转载注明原文:c# – 如何防止Windows窗体设计器为属性生成默认值赋值? - 代码日志