我有以下類別:C#反思 - 鑄造專用對象字段
public class MyEventArgs : EventArgs
{
public object State;
public MyEventArgs (object state)
{
this.State = state;
}
}
public class MyClass
{
// ...
public List<string> ErrorMessages
{
get
{
return errorMessages;
}
}
}
當我提出我的活動,我設置「國」 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)的構建問題。
謝謝
編輯:解決方案
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;
謝謝,但我沒有MyClass的實例。另外,發件人是不同類別的對象。 – alhazen 2010-03-30 22:26:45