编辑:看起来它可能是一个 Visual Studio 问题。如果我重新启动 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{}
}