[CSharp.net] RE: [CSharp.net] AW: [CSharp.net] RE: [CSharp.ne t] Reflection über Interface

Peter Koen csharp.net at glengamoi.com
Mon, 29 Mar 2004 13:36:27 +0200


Das kann nicht sein.
wenn deine form Variable von einem Typen abgeleitet ist der IFrame
implementiert, dann muß folgender Code reichen:

IFrame frame = form as IFrame;
if(frame!=null)
	frame.Save();

Einziger Grund wo das mit Reflection nicht hinhauen könnte: Save is private
und du hast keine passenden BindingFlags mitgegeben fürs Invoke.

lG
Peter 

> -----Original Message-----
> From: csharp.net-admin@glengamoi.com 
> [mailto:csharp.net-admin@glengamoi.com] On Behalf Of Mansur 
> Esmann [OM]
> Sent: Monday, March 29, 2004 1:35 PM
> To: csharp.net@glengamoi.com
> Subject: [CSharp.net] AW: [CSharp.net] RE: [CSharp.net] 
> Reflection über Interface
> 
> Dank!
> aber irgendwie will es nicht so richtig klappen ....
> 
> 		private void toolBar1_ButtonClick(...)
> 		{
> 			IFrame nform = form as IFrame;
> 
> 			Type t = nform.GetType();
> 
> 			MethodInfo mi = t.GetMethod("Save");
> 			if(mi != null)
> 				mi.Invoke(nform, null);
> 		}
> 
> IFrame ist mein Interface ...
> Ich bekomme aber nicht das Interface, sondern das Objekt 
> dahinter ..... das Childform.
> Eine Methode Save finde ich dann auch nicht, obwohl die ja im 
> Interface drinnen ist.
> 
> Liege ich da jetzt irgendwie völlig daneben?
> 
> Gruß Mansur
> 
> 
> >
> > Hallo,
> > Das hier sollte helfen:
> >
> > object o;
> > //o, beinhaltet das objekt, dass das interface supported
> >
> > //ermittle die gesuchte Methode eines Objekts Type t = =
o.GetType();
> >
> > MethodInfo mi = t.GetMethod("MeineMethode");
> > if(mi!=null)
> > 	mi.Invoke(o,null)
> >
> > alternativ, wenn das Interface und die Methode bekannt ist:
> >
> > MyInterface myInt = o as MyInterface;
> > if(myInt != null)
> > 	myInt.MyMethod();
> >
> > lG
> > Peter
> >
> > > -----Original Message-----
> > > From: csharp.net-admin@glengamoi.com 
> > > [mailto:csharp.net-admin@glengamoi.com] On Behalf Of 
> Mansur Esmann 
> > > [OM]
> > > Sent: Monday, March 29, 2004 9:41 AM
> > > To: csharp.net@glengamoi.com
> > > Subject: [CSharp.net] Reflection über Interface
> > >
> > > Hallo,
> > >
> > > ich habe in einem Interface eine Methode:
> > > public interface IFrame{
> > > 	void Save();
> > > }
> > >
> > > In einem Childformular implementiere ich die Methode:
> > > void IFrame.Save()
> > > {
> > > 	MessageBox.Show("speichern....");
> > > }
> > >
> > >
> > > Jetzt will ich über reflection:
> > > a.) Rausfinden welche Methoden zur Verfügung stehen
> > > b.) Falls gefunden die Methode ausführen
> > >
> > > Also a.) War kein Problem ....
> > > Aber b.) das kriege ich nicht hin ....
> > >
> > > InvokeMethode .... damit meine ich kann man das machen ....
> > > Ein googeln hat mir aber kein verständliches Beispiel 
> gebracht, wo 
> > > das mit einem Interface gemacht wird ....
> > >
> > > Hat da jemand ein Beispiel und ggf. ein paar Zeilen 
> Erläuterung dazu?
> > >
> > > Gruß Mansur
> > >
> > > _______________________________________________
> > > CSharp.net Mailingliste, Postings senden an:
> > > CSharp.net@glengamoi.com
> > > An-/Abmeldung und Suchfunktion unter:
> > > http://www.glengamoi.com/mailman/listinfo/csharp.net
> > >
> >
> > _______________________________________________
> > CSharp.net Mailingliste, Postings senden an:
> > CSharp.net@glengamoi.com
> > An-/Abmeldung und Suchfunktion unter:
> > http://www.glengamoi.com/mailman/listinfo/csharp.net
> 
> _______________________________________________
> CSharp.net Mailingliste, Postings senden an:
> CSharp.net@glengamoi.com
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/csharp.net
>