C# как вызвать метод интерфейса из списка свойств
Привет,
У меня есть следующий простой интерфейс
публичный интерфейс IWrite {
void SaveToFile(путь к строке);
}
публичный класс а :IWrite {
[CustomSerialize('некоторое значение')]
public B B1 {get;set}
[CustomSerialize('некоторое значение')]
public C C1 {get;set}
}
публичный класс B :IWrite{
}
публичный Класс C :IWrite{
}
Я написал следующий код, чтобы получить список свойств, имеющих мой пользовательский атрибут из класса А
List<propertyinfo> result = this.Метод gettype().Метод getproperties()
.Где(
p =>
п
.GetCustomAttributes(typeof(CustomSerializeAttribute), false)
.Любой(ка =&ГТ; ((CustomSerializeAttribute) Калифорния).SerializeType == 'значение')
)
.Список();
Я знаю, что каждый propertyInfo в списке результатов имеет реализацию интерфейса IWrite
Мой вопрос заключается в том , как на самом деле я вызываю метод SaveToFile() для каждого свойства в списке результатов
Значит , я хотел бы вызвать SaveToFile() для объектов B1 и C1
Большое спасибо,
Димитрий
Что я уже пробовал:
Я пытался
результат.По каждому элементу(х =&ГТ;
MethodInfo m = x.PropertyType.GetMethod("SaveToFile");
м. Вызов(х.И getValue(это, значение null), новый объект[] { "путь" });
Но GetMethod возвращает всегда null
Что я делаю не так ??
lmoelleb
Обычно GetMethod возвращает null, если флаги привязки неверны. Но если вы получаете значение свойства и знаете, что оно реализует IWrite - почему бы просто не привести его к IWrite и не вызвать SaveToFile напрямую?