3
其實應該有一個直截了當的回答這個問題(是關於下面的「對象」屬性):WCF - 作爲已知類型的對象 - >可互操作?
具有下列數據合同:
[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{}
}
及以下的服務合同:
public interface IService
{
[OperationContract(Name = "GetData")]
List<Transaction> GetTransact();
}
這是否可以互操作?從Java來說,gSoap?如果不是,我該如何使它可以互操作?
謝謝。
編輯: 我只是想知道,如果WCF知道如何序列化/反序列化從/對象進入定義的已知類型。
是的,這很清楚......但我只想知道WCF是否知道如何使用定義的已知類型從Object中序列化/反序列化。 – Learner 2011-05-12 15:33:51
作爲[KnownType]添加的東西可以告訴序列化程序關於它們的信息,並將它們添加到WSDL中。如果序列化程序得到一個對象,那麼是的,它會掃描適合的KnownTypes。通常這與繼承有關,比任何事情都重要。 – CodingWithSpike 2011-05-12 16:39:20
另外,對不起,我沒有注意到我第一次看到這個,你的一個數據成員是'Object'類型的。在這種情況下,只要實際實例的類型爲「Customer」或「Client」,我希望WCF能夠處理Object'Data'字段。在序列化時,它將從實例類型中知道,在反序列化中,它將從SOAP消息中傳遞的類型名稱中知道。 – CodingWithSpike 2011-05-12 16:42:39