Вы можете проверить каждое свойство из Type.GetProperties
, а затем отфильтровать те, которые имеют требуемый атрибут, с помощью метода MemberInfo.GetCustomAttributes
.
С небольшимнемного LINQ, это будет выглядеть так:
var propNameTuples = from property in typeof(Test).GetProperties()
let nameAttribute = (NameAttribute)property.GetCustomAttributes
(typeof(NameAttribute), false).SingleOrDefault()
where nameAttribute != null
select new { Property = property, nameAttribute.Name };
foreach (var propNameTuple in propNameTuples)
{
Console.WriteLine("Property: {0} Name: {1}",
propNameTuple.Property.Name, propNameTuple.Name);
}
Кстати, я также рекомендую объявлять атрибут одноразовым только с AllowMultiple = false
в оформлении AttributeUsage
.