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