我在用户控件中得到了这段代码:
[DefaultValue(typeof(Color), "Red")]
public Color MyColor { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何更改MyColor为默认值?
Ore*_*ost 21
在DefaultValueAttribute不设置该属性的值,它是纯粹的信息.Visual Studio设计器将此值显示为非粗体,其他值显示为粗体(已更改),但您仍需将属性设置为构造函数中的值.
如果值由用户设置,设计器将为属性生成代码,但您可以通过右键单击属性并单击来删除该代码Reset.
Mar*_*ell 11
DefaultValueAttribute编译器不使用它,并且(可能容易引起混淆)它不会设置初始值.你需要在构造函数中自己做这个.那个地方做应用DefaultValueAttribute包括:
PropertyDescriptor- 提供ShouldSerializeValue(由PropertyGrid等使用)XmlSerializer/ DataContractSerializer/ etc(序列化框架) - 用于决定是否需要包含它相反,添加一个构造函数:
public MyType() {
MyColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
(如果是struct自定义构造函数,则需要先调用:base())
它是非正式的,但您可以通过反射使用它,例如,在构造函数中放置以下内容:
foreach (PropertyInfo p in this.GetType().GetProperties())
{
foreach (Attribute attr in p.GetCustomAttributes(true))
{
if (attr is DefaultValueAttribute)
{
DefaultValueAttribute dv = (DefaultValueAttribute)attr;
p.SetValue(this, dv.Value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11946 次 |
| 最近记录: |