Lo es, pero en última instancia va a ser una forma indirecta, ya que obtendrá la instancia Type
de llamar al GetType
en su instancia que expone la propiedad, y luego trabajar en eso (la mayoría de las veces).
En este caso específico, su método de extensión no podrá obtener la información del atributo porque todo lo que le está pasando es una cadena.
En última instancia, lo que necesita es algo para obtener el PropertyInfo
de la propiedad. Otras respuestas se refieren al Type
, lo que les falta es que esta no es la única forma de obtener la información de los atributos en el PropertyInfo
que desee.
Usted puede hacer que al hacer pasar una instancia Type
con una cadena, presumiblemente, con el nombre de la propiedad, por lo que se puede llamar GetProperty
en el Type
.
Otra forma de hacer esto ya que C# 3.0 ha sido disponer de un método que toma un Expression<T>
y luego usar las partes de la Expression
para llegar a la PropertyInfo
. En este caso, tomaría un Expression<Func<string>>
o algo donde TResult
es una cadena.
Una vez que tenga el PropertyInfo
, puede llamar al GetCustomAttributes
y buscar su atributo.
La ventaja del enfoque de expresión es que Expression<T>
deriva de LambdaExpression
, que puede llamar al Compile
, y luego llamar para obtener el valor real, si lo necesita.
Esto tal vez tarde, pero echa un vistazo al método TypeDescriptor y GetAttributes que toma una instancia. Aquí hay una publicación muy buena con el mismo uso: http://geekswithblogs.net/abhijeetp/archive/2009/01/10/dynamic-attributes-in-c.aspx –