Ich habe (mal wieder) ein Problem mit Reflection. Und zwar versuche ich, mithilfe von Reflection (PropertyInfo) die Eigenschaften und deren Werte von Objekten auszulesen. Das ist eigentlich auch kein Problem und funktioniert prima.
Nur habe ich jetzt folgende Situation:
Es handelt sich um eine Client-/Server-Anwendung.
Ich habe mehrere Klassen erstellt, die von MarshalByRefObject erben und jeweils ein eigenes Interface implementieren. Die Klassen liegen am Server, der Client kennt nur die Interfaces.
So, wenn ich am Server Objekte (der dort vorhandenen Klassen) erzeuge und deren Eigenschaften auslese, funktioniert das gut. Wenn ich allerdings Objekte der auf dem Server liegenden Klassen am Client erstelle (dort sind sie ja dann vom Typ des zugehörigen Interfaces), bekomme ich bei der Typabfrage nur den Typ MarshalByRefObject. MarshalByRefObject kennt natürlich keine Eigenschaften und daher kann ich sie nicht auslesen.
Hier nochmal zur Verdeutlichung:
Auf dem Server:
public class MeinTyp() : MarshalByRefObject, IMeinTyp
{
}
MeinTyp myObj = new MeinTyp();
PropertyInfo[] test = myObj.GetType().GetProperties();
Das läuft prima und das PropertyInfo-Array test ist auch gefüllt.
Am Client:
IMeinTyp myObj = ErzeugeInstanzDesRemoteObjekts();
PropertyInfo[] test = myObj.GetType().GetProperties();
Hier ist test nicht gefüllt, weil GetType() eben nicht (wie von mir erwartet) IMeinTyp liefert, sondern den Basistyp MarshalByRefObject. Damit werden natürlich meine Properties nicht gefunden.
Hat jemand eine Idee, wie ich an die Eigenschaften sowie deren Werte des Remote-Objekts gelange?
Wenn ich ganz normal mit myObj.MeineEigenschaft darauf zugreife, funktioniert das selbstverständlich, nur halt nicht mit Reflection.
Würde mich wirklich freuen, wenn mir hier jemand helfen könnte.