如何设置枚举属性的默认值?
例如:
public enum SearchBoxMode { Instant, Regular };
[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value; } }
[DefaultValue((int)SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value; } }
[DefaultValue(SearchBoxMode.GetType(), "Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value; } }
[DefaultValue(SearchBoxMode.GetType(), "SearchBoxMode.Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value; } }
无关的问题:如何获得枚举的Type
? e.g。
Type type = DialogResult.GetType();
不起作用。
答案 0 :(得分:9)
对于该枚举,枚举类型的默认值为0,即使0不是已定义。其他任何东西必须手动完成,例如:
SearchBoxMode mode = SearchBoxMode.Instant; // field initializer
使用[DefaultValue(...)]
只会影响序列化和PropertyGrid
之类的内容 - 它实际上并不会使该属性默认为该值。正确的语法是根据您的第一个示例:
SearchBoxMode mode = SearchBoxMode.Instant;
[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value; } }
另一种方法是构造函数:
[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get; set; }
public YourType() {
Mode = SearchBoxMode.Instant;
}
第二个问题; typeof(DialogResult)