2011-10-07 55 views
1

我有了几个属性的一类情况:显示名称打印在C#中

Public Class Status 
{ 
     [DisplayName("Power"), Description("Index 4: transmit power in dBm")] 
     public double PwrdBby10 
     { 
      get { return (_arrayValue[4]/10.0); } 
     } 

     [DisplayName("Turbo"), Description("Index 5: transmit turbo size and encoding rate")] 
     public string TurboMsgType 
     { 
      get { return GetEnumString(_arrayValue[5], _elements); } 
     } 
} 

,我有一个反射功能,将比较同一类的两个对象,并打印出不同的特性。

public string Compare(object object1, object object2) 
    { 
     var source = object1.GetType(); 
     var propertyNames = source.GetProperties(); 
     var s = new StringBuilder(); 

     foreach (var propertyName in propertyNames) 
     { 
      var propertyValue1 = propertyName.GetValue(object1, null); 
      var propertyValue2 = propertyName.GetValue(object2, null); 
      if (propertyValue1.ToString() != propertyValue2.ToString()) 
      { 
       if (s.Length > 0) 
        s.Append(", "); 
       s.Append(propertyName.Name); 
       s.Append("="); 
       s.Append(propertyValue2.ToString()); 
      } 
     } 
     return s.ToString(); 
    } 

当我得到的结果我得到这样的"PwrdBpy10 = value"属性的名称;相反,我想打印displayName"Power = value"

你能解释我如何才能使它工作吗?

回答

1

您应该试试link。我希望它可以帮助

+0

嗨,它没有为我工作,没有DisplayName。任何其他想法?谢谢 – jprbest

+0

试试这个[link](http://alandjackson.wordpress.com/2011/01/06/c-display-name-from-property-using-reflection/) –

+0

感谢这次它的工作 – jprbest