WCF - Objekt als bekannter Typ -> interoperabel?
-
12-11-2019 - |
Frage
Eigentlich sollte es eine direkte Antwort auf diese Frage geben (geht es um die Eigenschaft "Objekt" unten):
Mit dem folgenden Datenvertrag:
[KnownType(typeof(bool))]
[KnownType(typeof(int))]
[KnownType(typeof(string))]
[KnownType(typeof(Customer))]
[KnownType(typeof(Client))]
public class Transaction
{
// properties
[DataMember(Name = "UID")]
public int UID{}
[DataMember(Name = "Type")]
public Enums.TransactionType Type{}
[DataMember(Name = "Data")]
public Object Data{}
}
und den folgenden Servicevertrag:
public interface IService
{
[OperationContract(Name = "GetData")]
List<Transaction> GetTransact();
}
Wird das interoperabel sein?Sprichwort aus Java, gSoap?Wenn nicht, wie kann ich es interoperabel machen?
Danke.
BEARBEITEN: Ich möchte nur wissen, ob WCF weiß, wie man das Objekt von / in die definierten bekannten Typen serialisiert / deserialisiert.
Lösung
Es sollte in Ordnung sein, solange der Client die Typen ordnungsgemäß aus der WSDL generieren kann.Zum Beispiel könnte es je nach Client C # ändern List<Transaction>
in eine Transaction[]
oder etwas ziemlich Gleichwertiges.Sie müssen auch den richtigen Bindungstyp auswählen.Normalerweise hat basicHttpBinding die besten Ergebnisse für die Interoperabilität.