Да, но в конечном итоге это будет окольный путь, так как вы получите экземпляр Type
от вызова GetType
вашего экземпляра, который выставляет свойство, и затем будете работать над этим (чаще всего, чем нет).
В этом конкретном случае ваш метод расширения не сможет получить информацию об атрибутах, потому что все, что вы передаете ему, это строка.
В конечном счете, вам нужно получить 1007 * за собственность. Другие ответы относятся к Type
, но им не хватает этого, это не единственный способ получить информацию об атрибутах на PropertyInfo
, которую вы хотите.
Вы можете сделать это, передав экземпляр Type
со строкой, предположительно, с именем свойства, чтобы вы могли вызвать GetProperty
для Type
.
Еще один способ сделать это, поскольку в C # 3.0 есть метод, который принимает Expression<T>
, а затем использует части Expression
, чтобы получить PropertyInfo
. В этом случае вы бы взяли Expression<Func<string>>
или что-то, где TResult
- строка.
Если у вас есть PropertyInfo
, вы можете позвонить на GetCustomAttributes
и найти свой атрибут.
Преимущество подхода с использованием выражений заключается в том, что Expression<T>
происходит от LambdaExpression
, который можно вызвать Compile
on, а затем вызвать, чтобы получить фактическое значение, если оно вам нужно.