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));
}