![](/img/trans.png)
[英]Force property grid to update after ResetValue in PropertyDescriptor
[英]How does PropertyDescriptor.ResetValue Method determine default value of property
我已經實現了一個自定義類,並試圖通過調用PropertyDescriptor.ResetValue方法來設置其默認值。 當我在Internet上進行一些研究時,我在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";
}
}
該文檔說,如果您在PropertyDescriptor
為Name
屬性調用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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.