实际上这个问题应该有一个直截了当的答案(关于下面的“对象”属性):
拥有以下数据合同:
[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是否知道如何从定义的已知类型中序列化/反序列化Object。
答案 0 :(得分:1)
只要客户端可以从WSDL正确生成类型,它应该没问题。例如,取决于客户端,它可能会将C#的List<Transaction>
更改为Transaction[]
或类似的东西。您还需要选择正确的绑定类型。通常basicHttpBinding具有最佳的互操作性结果。