Nein, die Frage war eher ob du das in der Klasse dann public, private oder protected hast. Der Accessmodifier mu� nat�rlich zum Context passen.
Au�erdem solltest du ein Invoke immer gegen das Object machen, das instanziert wurde, nicht gegen das interface. Das Interface dient nur der Informationsbeschaffung was das Object implementiert. Und wenn sowohl Interface als auch Methode von Anfang an feststehen is Reflection der definitiv falsche Weg (Performance, Late Binding!). Aufpassen mu�t du noch falls das Projekt in mehrere DLLs zerlegt ist, dass die, in der das Interface definiert ist nicht mehrfach vorhanden ist durch Referenzen (bspw. in einem unterverzeichnis). Dann w�rde sich n�mlich die AssemblyIdentity unterscheiden und der Aufruf von Invoke auf das Objekt w�re trotz erfolgreichem TypInfo ermitteln nicht g�ltig! lG Peter > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Mansur > Esmann [OM] > Sent: Monday, March 29, 2004 1:48 PM > To: [EMAIL PROTECTED] > Subject: [CSharp.net] AW:Reflection �ber Interface > > Genau .... das wollte ich gerade noch schreiben: > > IFrame nform = form as IFrame; > nform.Save(); > > Das geht .... > > Im Memberinfo steht es aber scheibar net: > MethodInfo mi = t.GetMethod("Save"); > if(mi != null) > mi.Invoke(nform, null); > > Das Interface schaut folgenderma�en aus: > > public interface IFrame > { > frmMain Parent > { > get; > set; > } > string HelpFile > { > get; > } > > string FrameTitle > { > get; > } > > string[] Action > { > get; > set; > } > > void Save(); > > } > > Ein Public kann ich gar nicht angeben .... "public ist f�r > dieses Element nicht g�ltig" > > Im Childframe schreibe ich dann folgendes (Das hatte ich aber > schon gepostet): > void IFrame.Save() > { > MessageBox.Show("speichern"); > } > > > > > 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: [EMAIL PROTECTED] > > > [mailto:[EMAIL PROTECTED] On Behalf Of > Mansur Esmann > > > [OM] > > > Sent: Monday, March 29, 2004 1:35 PM > > > To: [EMAIL PROTECTED] > > > 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: [EMAIL PROTECTED] > > > > > [mailto:[EMAIL PROTECTED] On Behalf Of > > > Mansur Esmann > > > > > [OM] > > > > > Sent: Monday, March 29, 2004 9:41 AM > > > > > To: [EMAIL PROTECTED] > > > > > 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: > > > > > [EMAIL PROTECTED] > > > > > An-/Abmeldung und Suchfunktion unter: > > > > > http://www.glengamoi.com/mailman/listinfo/csharp.net > > > > > > > > > > > > > _______________________________________________ > > > > CSharp.net Mailingliste, Postings senden an: > > > > [EMAIL PROTECTED] > > > > An-/Abmeldung und Suchfunktion unter: > > > > http://www.glengamoi.com/mailman/listinfo/csharp.net > > > > > > _______________________________________________ > > > CSharp.net Mailingliste, Postings senden an: > > > [EMAIL PROTECTED] > > > An-/Abmeldung und Suchfunktion unter: > > > http://www.glengamoi.com/mailman/listinfo/csharp.net > > > > > > > _______________________________________________ > > CSharp.net Mailingliste, Postings senden an: > > [EMAIL PROTECTED] > > An-/Abmeldung und Suchfunktion unter: > > http://www.glengamoi.com/mailman/listinfo/csharp.net > > _______________________________________________ > CSharp.net Mailingliste, Postings senden an: > [EMAIL PROTECTED] > An-/Abmeldung und Suchfunktion unter: > http://www.glengamoi.com/mailman/listinfo/csharp.net > _______________________________________________ CSharp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net
