我有一个用户控件,其属性是引用类型。 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方法在这里可能更合适。
答案 0 :(得分:21)
Murky,我可以使用一个片段。告诉设计师它不应该序列化属性的值:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Image Aardvark { get; set; }