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?

questionAnswers(2)

yourAnswerToTheQuestion