【发布时间】:2014-02-27 18:49:09
【问题描述】:
以下面的示例代码为例:
public class TestMultipleAttributesAttribute : AttributeWithPriority
{
public string HelpMessage { get; set; }
}
public class Student
{
[TestMultipleAttributes(HelpMessage = "Student")]
public virtual string Name { get; set; }
}
public class SpecificStudent : Student
{
[TestMultipleAttributes(Priority = 100, HelpMessage = "SpecificStudent")]
public override string Name { get; set; }
}
有什么方法可以通过反射获得TestMultipleAttributes 的两个实例以获取相同的覆盖属性?
我尝试了以下代码:
[Test]
public void testMultipleAttribs()
{
var property = typeof(SpecificStudent).GetProperties().FirstOrDefault(x => x.Name == "Name");
var attribList = property.Attributes; //returns none
var customAttribs = property.CustomAttributes.ToList(); //returns 1
var customAttribs2 = property.GetCustomAttributes(inherit: true);// returns 1
int k = 5;
}
想到的一个解决方案是找到property.DeclaringType,并重复该过程,并获取它的属性。但是,我不认为这是一种优雅的方法,我想知道是否有更好的方法。
【问题讨论】:
-
请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。
标签: c# reflection custom-attributes