Eine meiner WCF-Funktionen gibt ein Objekt zurück, das eine Elementvariable eines Typs aus einer anderen Bibliothek enthält, die sich meiner Kontrolle entzieht. Ich kann die Klassen dieser Bibliothek nicht dekorieren. Tatsächlich kann ich DataContractSurrogate nicht einmal verwenden, da die Klassen der Bibliothek private Membervariablen haben, die für den Betrieb wesentlich sind (d. H. Wenn ich das Objekt ohne diese privaten Membervariablen zurückgebe, werfen die öffentlichen Eigenschaften Ausnahmen).WCF - Rückgabeobjekt ohne Serialisierung?
Wenn ich sage, dass die Interoperabilität für diese bestimmte Methode nicht benötigt wird (zumindest bis die Besitzer dieser Bibliothek revidieren können, um ihre Objekte serialisierbar zu machen), ist es möglich, WCF zu verwenden, um dieses Objekt so zurückzugeben zumindest von einem .NET-Client verbraucht werden?
Wie gehe ich dabei vor?
Update: Ich füge Pseudo-Code unten ...
// My code, I have control
[DataContract]
public class MyObject
{
private TheirObject theirObject;
[DataMember]
public int SomeNumber
{
get { return theirObject.SomeNumber; } // public property exposed
private set { }
}
}
// Their code, I have no control
public class TheirObject
{
private TheirOtherObject theirOtherObject;
public int SomeNumber
{
get { return theirOtherObject.SomeOtherProperty; }
set { // ... }
}
}
Ich habe versucht Datamember zu meinem Beispiel ihrer Aufgabe hinzufügen, es öffentlich zu machen, eine DataContractSurrogate verwenden und auch das Objekt manuell Streaming. In allen Fällen bekomme ich einen Fehler, der schließlich dazu führt, dass ihr Objekt nicht explizit serialisiert werden kann.
Haben Sie die binäre Serialisierung untersucht? –
@Sergei: Ich habe versucht, manuell Serialisierung in binäre Verwendung von BinaryFormatter aber eine Objekt nicht serialisierbare Ausnahme. Glauben Sie, dass die binäre Serialisierung von WCF bei diesem Fehler besser funktioniert? – Mayo