PropertyDescriptor.ResetValue方法如何确定属性的默认值
本文关键字:属性 默认值 何确定 ResetValue 方法 PropertyDescriptor | 更新日期: 2023-09-27 18:19:58
我已经实现了一个自定义类,并试图通过调用PropertyDescriptor.ResetValue方法来设置其默认值。当我在互联网上做一些研究时,我在msdn中看到了一个关于这种方法、它的用法以及如何使用的链接。
http://msdn.microsoft.com/en-us/library/system.componentmodel.propertydescriptor.resetvalue.aspx
根据这个链接,msdn文件说:
此方法按以下优先顺序确定要将属性重置为的值:1-此属性存在阴影属性。2-此属性有一个DefaultValueAttribute。3-您已经实现了一个"ResetMyProperty"方法,其中"MyProperty"是您传递给它的属性的名称。
第二种方法不符合我的需要。另一方面,没有足够的第一项和第三项的使用样本。
你能特别解释一下第三个吗?
我不知道第一个选项(我怀疑这是关于在基类中声明一个属性和在派生类中声明"新"属性),但第三个对我来说似乎很简单:
public class Foo
{
public string Name { get; set; }
public Foo()
{
ResetName();
}
public void ResetName()
{
Name = "Some default value";
}
}
文档中说,如果对Name
属性的PropertyDescriptor
调用ResetValue
,它将调用组件上的ResetName
方法。
我从来没有真正尝试过,但这将是我的解释。
您可以检索(2)DefaultValueAttribute,如下所示:
public class MyClass { [DefaultValue("my default value")] public string MyVar { get; set; } foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(typeof(MyClass))) string defaultValue = descriptor.Attributes.OfType<DefaultValueAttribute>().First().Value.ToString();