0

私はユーザーコントロールを持っています。

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

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

このコントロールをフォームにドラッグすると、シリアル化エラーが発生します。初めてコントロールをドラッグするか、コントロールを削除するかなどによって、エラーが変わります。定数は、Personをシリアル化可能にすると、エラーがなくなるということです。要素をフォームにドロップするときにエラーが発生するのはなぜですか?典型的な修正は何ですか?

4

1 に答える 1

3

Visual Studio は、UserControl を表示するために、実際にデザイナーのシリアル化を行います。Person オブジェクトはシリアル化できないため、エラーが発生します。シリアル化可能にするか、プロパティをマークして、設計時のシリアル化で無視されるようにすることができます (以下を参照)。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]デザイナーでコントロールを設定しようとしているときにプロパティを呼び出さないように、プロパティをマークすることができます。

Hidden は、シリアライザーがプロパティの値をシリアル化しないことを指定します。この静的フィールドは読み取り専用です。

于 2012-05-03T18:04:37.537 に答える