using System.Reflection;
private object GetProperty(object
AObject, string APropertyName)
{
if (AObject ==
null) return
null;
Type vType = AObject.GetType();
PropertyInfo vPropertyInfo
= vType.GetProperty(APropertyName);
if (vPropertyInfo == null) return
null;
return vPropertyInfo.GetValue(AObject,
null);
}
private bool SetProperty(object
AObject, string APropertyName,
object AValue)
{
if (AObject ==
null) return
false;
Type vType = AObject.GetType();
PropertyInfo vPropertyInfo
= vType.GetProperty(APropertyName);
if (vPropertyInfo == null) return
false;
vPropertyInfo.SetValue(AObject,
AValue, null);
return true;
}
private bool AddEvent(object AObject,
string AEventName, Delegate AEvent)
{
if (AObject ==
null) return
false;
Type vType = AObject.GetType();
EventInfo vEventInfo = vType.GetEvent(AEventName);
if (vEventInfo ==
null) return
false;
vEventInfo.AddEventHandler(AObject,
AEvent);
return true;
}
private bool RemoveEvent(object
AObject, string AEventName,
Delegate
AEvent)
{
if (AObject ==
null) return
false;
Type vType = AObject.GetType();
EventInfo vEventInfo = vType.GetEvent(AEventName);
if (vEventInfo ==
null) return
false;
vEventInfo.RemoveEventHandler(AObject,
AEvent);
return true;
}
public object InvokeMethod(object
AObject, string AMethodName,
object[] AParams)
{
if (AObject ==
null) return
false;
Type vType = AObject.GetType();
MethodInfo vMethodInfo
= vType.GetMethod(AMethodName);
if (vMethodInfo == null) return
false;
return vMethodInfo.Invoke(AObject, AParams);
}
private void button1_Click(object
sender, EventArgs
e)
{
SetProperty(textBox1, "Text",
"Zswang 路过!");
Text =
string.Format("{0}", GetProperty(textBox1, "Text"));
AddEvent(textBox1, "Click",
new EventHandler(TextBox_Click));
}
private void TextBox_Click(object
sender, EventArgs
e)
{
MessageBox.Show(((TextBox)sender).Text);
RemoveEvent(sender, "Click",
new EventHandler(TextBox_Click));
}