2015-10-12 37 views
-2

基本上這個問題出現在標題中:我如何檢查一個類的屬性有什麼屬性?例如這樣的屬性:如何查看代碼中屬性的應用屬性?

[SomeAttribute()] 
public double Hours; 

我怎麼能調試該Hours有屬性SomeAttribute中看到了什麼?

+1

工作中使用反射。你嘗試搜索嗎? – CodeCaster

+0

@CodeCaster,謝謝你的提示 - 我會嘗試反思。 – Dima

+1

它幫助了我,謝謝! – Dima

回答

1

你可以使用將只執行一個簡單的輔助擴展方法調試時=>此方法將輸出寫入調試窗口

static class Extensions 
{ 
    [Conditional("DEBUG")] 
    public static void ShowAllProperties(this object obj) 
    { 
     var type = obj.GetType(); 
     Debug.WriteLine(string.Format("Classname: {0}", type.Name)); 
     var properties = type.GetProperties(); 
     foreach (var property in properties) 
     { 
      //true will show inherited attributes as well 
      var attributes = property.GetCustomAttributes(true); 
      foreach (var attribute in attributes) 
      { 
       Debug.WriteLine(String.Format("'\t{0} - {1}", property, attribute)); 
      } 
     } 
    } 
} 

至極然後可以通過其他類例如在所謂的構造函數。

class Book 
{ 
    [XmlElement("Author")] 
    public string Author { get; set; } 

    public Book() 
    { 
     this.ShowAllProperties(); 
    } 
} 

這也將繼承

class ComicBook 
: Book 
{ 
    [XmlElement("ComicBookGenre")] 
    public string ComicbookGenre { get; set; } 
    public string ComicBookPublisher { get; set; } 
}