我有一个类数据,其中定义了一个原型ReportName,显示名称略有不同,因此网格列标题更有意义。
现在我正在向这个类实现IDataErrorInfo,以便在保存时向最终用户显示一条错误消息,说“报告名称不能为空”。那么如何在同一个类的私有方法中访问ReportName的display member属性呢?
Class Data
{
[ProtoMember(1), DefaultValue(null), DisplayName("Report Name")]
public string ReportName { get; set; }
//Check if the reportname was entered
private void CheckReportName()
{
//code to check reportname and generate the errormessage containing the colheader to be sent to grid
}
}
何
答案 0 :(得分:1)
您可以使用反射:
var displayName = this.GetType()
.GetProperty("ReportName")
.GetCustomAttributes(false)
.OfType<DisplayNameAttribute>()
.First()
.DisplayNameValue;
答案 1 :(得分:0)
鉴于Reflection已经需要一个'魔术字符串'来让属性名称查找该值,你可能会考虑这样的事情:
class Data
{
[ProtoMember(1), DefaultValue(null), DisplayName(DisplayNames.ReportName)]
public string ReportName { get; set; }
//Check if the reportname was entered
private void CheckReportName()
{
//code to check reportname and generate the errormessage containing the colheader to be sent to grid
}
private static class DisplayNames
{
public const string ReportName = "Report Name";
}
}
这比基于反射的方法执行得更快,并且(更重要的是)它避免使用硬编码属性名来获取属性来查找属性。