В моем приложении C# я буду обрабатывать объекты, которые наследуют от моего класса BaseDomainModel
, который имеет метод public virtual void ValidateModel()
. В моем примере я получаю экземпляр объекта CompanyUser
, который имеет по крайней мере одно свойство типа, наследующего от BaseDomainModel
.Пытаться вызвать метод для дочерних свойств
Я хотел бы пройти эти свойства и вызвать метод ValidateModel()
по этим свойствам.
Вот то, что я до сих пор:
var validatableProperties = testCompanyUser.GetType().GetProperties().Where(p => p.PropertyType.BaseType == typeof(BaseDomainModel));
foreach (var thisProperty in validatableProperties)
{
var m = thisProperty.PropertyType.GetMethod("ValidateModel", Type.EmptyTypes);
m.Invoke(thisProperty.GetValue(testCompanyUser), null);
}
В настоящее время я получаю это сообщение:
Non-статический метод требует цели.
Уверен, что мне не хватает чего-то простого. Что я сделал не так?
Чтобы восстановить это, [msdn] (https://msdn.microsoft.com/en-us/library/a89hcwhh (v = vs.110) .aspx) детализирует использование Invoke и, в частности, условия, при которых будет вызываться 'TargetException'. –