首页  编辑  

GetPropert、SetProperty、AddEvent、RemoveEvent、InvokeMethod

Tags: /C#/RTTI/   Date Created:

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

}