Jest, ale docelowo będzie okrężny, ponieważ wywoła instancję Type
z wywołania GetType
na instancji, która eksponuje właściwość, a następnie nad nią pracuje (częściej niż nie).
W tym konkretnym przypadku, twoja metoda rozszerzenia nie będzie w stanie uzyskać informacji o atrybutach, ponieważ wszystko, co do Ciebie przekazujesz, jest ciągiem.
W końcu to, czego potrzebujesz, to coś, z czego można uzyskać PropertyInfo
. Inne odpowiedzi odnoszą się do Type
, czego im brakuje, to nie jest jedyny sposób, aby uzyskać informacje o atrybutach na PropertyInfo
, które chcesz.
Możesz to zrobić, przekazując instancję Type
ciągiem, prawdopodobnie z nazwą właściwości, aby można było wywołać GetProperty
na Type
.
Innym sposobem na osiągnięcie tego od C# 3.0 został mieć metodę, która zajmuje Expression<T>
a następnie użyć części Expression
dostać na PropertyInfo
. W takim przypadku możesz wziąć Expression<Func<string>>
lub coś, gdzie TResult
jest łańcuchem.
Po uzyskaniu numeru PropertyInfo
można zadzwonić pod numer GetCustomAttributes
i poszukać atrybutu.
Zaletą metody wyrażania jest to, że Expression<T>
pochodzi od LambdaExpression
, którą można wywołać pod numerem Compile
, a następnie wywołać, aby uzyskać aktualną wartość, jeśli jest potrzebna.
To może być późno, ale sprawdź metodę TypeDescriptor i GetAttributes, która pobiera wystąpienie. Oto bardzo fajny post o tym samym zastosowaniu: http://geekswithblogs.net/abhijeetp/archive/2009/01/10/dynamic-attributes-in-c.aspx –