En fait, il devrait y avoir une réponse avant droit à cette question (est sur la propriété « Object » ci-dessous):WCF - Objet comme type connu -> interopérable?
Avoir le contrat de données suivantes:
[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{}
}
et le contrat de service suivant:
public interface IService
{
[OperationContract(Name = "GetData")]
List<Transaction> GetTransact();
}
Est-ce que cela sera interopérable? Dire de Java, gSoap? Si non, comment puis-je le rendre interopérable?
Merci.
EDIT: Je veux juste savoir si WCF sait comment sérialiser/désérialiser l'objet de/dans les types connus définis.
Oui, c'est clair ... Mais je veux juste savoir si WCF sait comment sérialiser/désérialiser à partir de l'objet en utilisant les types connus définis. – Learner
Les choses ajoutées en tant que [KnownType] sont là pour indiquer le sérialiseur à leur sujet, et les ajoute également au WSDL. Si le sérialiseur obtient un objet, alors oui il va scanner les KnownTypes pour celui qui convient. Typiquement cela entre en jeu avec l'héritage plus que tout. – CodingWithSpike
Aussi, désolé, je n'ai pas remarqué la première fois que j'ai regardé cela, un de vos membres de données était de type 'Object'. Dans ce cas, je m'attendrais à ce que WCF gère correctement le champ Object 'Data' tant que l'instance réelle est de type' Client' ou 'Client'. Sur la sérialisation, il connaîtrait à partir du type d'instance, sur la désérialisation qu'il connaîtrait du nom de type transmis dans le message SOAP. – CodingWithSpike