我有一个用户控件。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public List<Person> People
{
get
{
return new List<Person>();
}
set
{
throw new NotImplementedException();
}
}
}
如果我将此控件拖到窗体上,我会收到序列化错误。错误的变化取决于我是否第一次拖动控件,删除控件或其他什么。常量是如果我使Person可序列化,那么错误就会消失。为什么在将元素放到表单上时会发生错误?什么是典型的解决方案?
答案 0 :(得分:3)
Visual Studio实际上会执行一些designer serialization以显示UserControl。由于Person对象不可序列化,因此会出现错误。您可以使其可序列化或标记属性,以便设计时序列化将忽略它(见下文)。
您可以将该属性标记为[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
,以便在尝试在设计器中设置控件时不会调用该属性。
Hidden指定序列化程序不应序列化属性的值。此静态字段是只读的。