У меня есть следующие классы:
public class MyEventArgs : EventArgs
{
public object State;
public MyEventArgs (object state)
{
this.State = state;
}
}
public class MyClass
{
// ...
public List<string> ErrorMessages
{
get
{
return errorMessages;
}
}
}
Когда я поднимаю свое событие, я устанавливаю «State» объекта MyEventArgs для объекта типа MyClass.Я пытаюсь получить ErrorMessages путем отражения в моем обработчике событий:
public static void OnEventEnded(object sender, EventArgs args)
{
Type type = args.GetType();
FieldInfo stateInfo = type.GetField("State");
PropertyInfo errorMessagesInfo = stateInfo.FieldType.GetProperty("ErrorMessages");
object errorMessages = errorMessagesInfo.GetValue(null, null);
}
Но это возвращает errorMessagesInfo как ноль (даже если stateInfo не нуль).Возможно ли получить ErrorMessages?
Редактировать: я должен уточнить, что обработчик событий находится в другой сборке, и я не могу ссылаться на первую сборку (которая содержит MyEventArgs и MyClass) для проблем сборки.1010 * Спасибо
Редактировать: Решение
FieldInfo stateInfo = args.GetType().GetField("State");
Object myClassObj = stateInfo.GetValue(args);
PropertyInfo errorMessagesInfo = myClassObj.GetType().GetProperty("ErrorMessages");
object errorMessagesObj = errorMessagesInfo.GetValue(myClassObj, null);
IList errorMessages = errorMessagesObj as IList;