2012-05-03 19 views
0

私はユーザーコントロールを持っています。プロパティがシリアル化可能でないエラー

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は実際には、UserControlを表示するためにdesigner serializationを実行します。 Personオブジェクトは直列化できないため、エラーが発生します。シリアライズ可能にするか、プロパティにマークを付けると、デザイン時のシリアル化で無視されます(下記参照)。

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

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

関連する問題