Я написал настраиваемый атрибут, который я использую для определенных членов класса:
public class Dummy
{
[MyAttribute]
public string Foo { get; set; }
[MyAttribute]
public int Bar { get; set; }
}
Я могу получить настраиваемые атрибуты из типа и найти свой конкретный атрибут.То, что я не могу понять, как это сделать, это получить значения назначенных свойств.Когда я беру экземпляр Dummy и передаю его (как объект) своему методу, как я могу взять объект PropertyInfo, который я получаю обратно из .GetProperties (), и получить значения, присвоенные .Foo и .Bar?
РЕДАКТИРОВАТЬ:
Моя проблема в том, что я не могу понять, как правильно вызвать GetValue.
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);
}
}
Однако, когда я делаю это, вызов prop.GetValue дает мне TargetException - объект не соответствует типу цели.Как мне структурировать этот вызов, чтобы получить это значение?