DesignerSerializationVisibility

以下、忘れないうちにメモ。

Visual Studio 2005上、デザイン時のカスタムコントロールは、デザイナに変更されたプロパティの値をシリアライズするための機構を持っている。初期値から変更された、つまりダーティとマークされたプロパティは、自動的にシリアライズの対象になり、変更されたプロパティは適宜保存される。
デザイン時に設定したプロパティだが、必ずしも全てのプロパティを保存するのが良いとは限らない。そのまま保存することができないプロパティもあるし、そもそも保存したくないプロパティもある。
このように、デザイン時のカスタムコントロールのプロパティのシリアライズを制御するのが表題のカスタム属性である、DesignerSerializationVisibilityだ。

・プロパティをシリアライズの対象にする

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string Name
{

・プロパティの内部をシリアライズの対象にする(コレクションの要素を対象にする)

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public IList Items
{

・プロパティをシリアライズの対象から除外する

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public object DataSource
{

http://msdn2.microsoft.com/ja-jp/library/ms171833.aspx

やり方はもっと原始的だったが、Delphiと何も変わっちゃいないな。