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