Obter valor da propriedade personalizada decorada por atributos?
Eu escrevi um atributo personalizado que eu uso em certos membros de uma classe:
public class Dummy
{
[MyAttribute]
public string Foo { get; set; }
[MyAttribute]
public int Bar { get; set; }
}
Sou capaz de obter os atributos personalizados do tipo e encontrar meu atributo específico. O que não consigo descobrir como fazer é obter os valores das propriedades atribuídas. Quando tomo uma instância do Dummy e a passo (como um objeto) para o meu método, como posso pegar o objeto PropertyInfo que recebo de .GetProperties () e obter os valores atribuídos a .Foo e .Bar?
EDITAR:
Meu problema é que não consigo descobrir como chamar GetValue corretamente.
void TestMethod (object o)
{
Type t = o.GetType();
var props = t.GetProperties();
foreach (var prop in props)
{
var propattr = prop.GetCustomAttributes(false);
object attr = (from row in propattr where row.GetType() == typeof(MyAttribute) select row).First();
if (attr == null)
continue;
MyAttribute myattr = (MyAttribute)attr;
var value = prop.GetValue(prop, null);
}
}
No entanto, quando faço isso, a chamada prop.GetValue me fornece uma TargetException - Object não corresponde ao tipo de destino. Como estruturar essa chamada para obter esse valor?