編集:VisualStudioの問題のようです。Visual Studioを再起動すると、ソリューションを再構築するまで機能します。
このコードを使用すると、デザイナーで「プロパティ「MyMode」に「B」を設定できませんでした」という例外が発生します。
public class MyControl : CompositeControl
{
public enum MyEnum{ A, B }
[DefaultValue(MyEnum.A)]
public MyEnum MyMode
{
get
{
object obj = ViewState["MyMode"];
return obj == null ? MyMode.A : (MyEnum)obj;
}
set
{
ViewState["MyMode"] = value;
}
}
}
再現するには:プロジェクトにコントロールを作成します。コントロールを別のプロジェクトのWebフォームにドラッグします。プロパティウィンドウでMyMode=Bを設定します。フォームを閉じて、デザイナーを再度開きます。
私は何が間違っているのですか?文字列を手動で列挙型に解析する必要がありますか?
編集:デザイナーが生成したコード。
<cc1:MyControl ID="MyControl1" runat="server" MyMode="B" />
編集:実際、このプロパティも失敗します:
public MyEnum MyMode
{
get
{
return MyEnum.A;
}
set{}
}