2009-07-02 4 views
0

ich ein privates Feld von einem remoted Objekt zurückkehren will, aber ich bekomme die Ausnahme:Reflecting private Remoted Objekte

Remoting Remoting nicht gefangen wurde Feld ‚Connection‘ vom Typ ‚DBGeneral‘ beinhaltet.

Ich bekomme das FieldInfo-Objekt des privaten Feldes beim Ausführen der GetField() -Methode.

Aber es ist, wenn GetValue() ausführen, dass die RemotingException ausgelöst wird.

Wenn ich remoting aus und das lokale private connectionString Feld widerspiegeln, bekomme ich die Zeichenfolge an mich zurückgegeben.

Antwort

1

Dies macht einige Annahmen darüber, wie Sie remoting sind, möglicherweise nicht richtig, aber würde Ihren Fehler erklären.

Wenn Ihr Objekt über Remoting gesendet wird, muss es serialisiert werden. Der Serializer kann nur die öffentlichen Eigenschaften "sehen", daher werden private Eigenschaften nicht über die Leitung gesendet.

Edit: Basierend auf Kommentar

Sie haben atleast 2 Möglichkeiten:

Die einfache ist die Eigenschaft, öffentlich zu machen.

Eine, die viel mehr Arbeit ist, ist von der Verwendung von Remoting zu WCF zu wechseln. Dann können Sie Ihre private Variable wie folgt markieren:

[DataMember(Name="SomeValue")] 
private int m_SomeValue; 
+0

Gibt es eine Möglichkeit, anders zu remote, so dass ich private Objekte auf dem Draht senden kann? – johnDisplayClass