簡體   English   中英

PropertyDescriptor.ResetValue方法如何確定屬性的默認值

[英]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";
    }
}

該文檔說,如果您在PropertyDescriptorName屬性調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM