在C#中是否有任何方法可以为设置了默认值的属性自动设置DefaultValueAttribute?

Rus*_*den 2 c#

反正有没有隐含地执行以下模式?

    [DefaultValue(true)]
    public bool SomeBooleanProperty { get; set; } = true;
Run Code Online (Sandbox Code Playgroud)

在两个地方重复默认值似乎只是在某处乞求错误,无论如何似乎都是多余的.我可以想象一些将DefaultValueAttribute自动设置为默认值(或任何值)的情况是不可取的,但我认为这些将是例外而不是规则.在这些情况下,解决方案只是在构造函数中设置默认值,而不是在我认为比冗余代码更轻松的声明中.

Gar*_*eth 5

MSDN对DefaultValueAttribute说了这个

DefaultValueAttribute不会导致使用属性的值自动初始化成员.您必须在代码中设置初始值.

文章建议做这样的事情,以避免重复的代码

static public void ApplyDefaultValues(object self)
{
    foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(self)) {
        DefaultValueAttribute attr = prop.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
        if (attr == null) continue;
        prop.SetValue(self, attr.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)