属性不可序列化错误

时间:2012-05-03 17:59:56

标签: c# winforms

我有一个用户控件。

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    public List<Person> People
    {
        get
        {
            return new List<Person>();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}

如果我将此控件拖到窗体上,我会收到序列化错误。错误的变化取决于我是否第一次拖动控件,删除控件或其他什么。常量是如果我使Person可序列化,那么错误就会消失。为什么在将元素放到表单上时会发生错误?什么是典型的解决方案?

1 个答案:

答案 0 :(得分:3)

Visual Studio实际上会执行一些designer serialization以显示UserControl。由于Person对象不可序列化,因此会出现错误。您可以使其可序列化或标记属性,以便设计时序列化将忽略它(见下文)。

您可以将该属性标记为[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)],以便在尝试在设计器中设置控件时不会调用该属性。

  

Hidden指定序列化程序不应序列化属性的值。此静态字段是只读的。