Вы можете написать такую функцию и получить имя свойства по выражению, а не по строке lliterals
public string Item(this T obj, Expression<Func<T, object>> expression)
{
if (expression.Body is MemberExpression)
{
return ((MemberExpression)expression.Body).Member.Name;
}
if (expression.Body is UnaryExpression)
{
return ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member.Name;
}
throw new InvalidOperationException();
}
Использование:
public int SomeProp
{
get
{
var attribs =
this.GetType().GetProperty(this.Item(o => o.SomeProp)).Attributes;
}
}