読者です 読者をやめる 読者になる 読者になる

VSのデザイナに初期化させないプロパティを作成する

VisualStudioのデザイナを使っていると、
コンポーネントやコントロールなどを配置した時に自動的にそのメンバを初期化する。
空のコンストラクタで生成したオブジェクトを代入したり、nullを代入したり。
その自動初期化のコードを生成してほしくない!と言うことは多々あるはず。

Browsable

まず考えられるのは

[Browsable(false)]

という属性を付加すること。
こうすれば、デザイナからは見られなくなるので、少なくともコンポーネント等のユーザがデザイナから変更することはなくなる。

ShouldSerializeHogeHoge()

しかしこれでは不完全で、デザイナからは見られなくなってもVSは初期化コードを*.Designer.csに吐いてくれます。嫌な子。

これを完全に吐かせないようにするには

private bool ShouldSerializeHogeHoge()
{
	return false;
}

というメソッドをそのプロパティが入っているクラスに入れてやれば良い。
「ShouldSerializeHogeHoge」の「HogeHoge」部分は、そのプロパティの名前に変更すること。

例えばプロパティ名が「Name」であれば

private bool ShouldSerializeName()

みたいな感じで。


ShouldSerialieHogeHogeの詳しい使い方とかはmsdnとかを見て貰えば良いと思うよ。