WCF - 对象作为已知类型 - >可互操作的?

时间:2011-05-12 15:05:58

标签: c# wcf object interop known-types

实际上这个问题应该有一个直截了当的答案(关于下面的“对象”属性):

拥有以下数据合同:

    [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。

1 个答案:

答案 0 :(得分:1)

只要客户端可以从WSDL正确生成类型,它应该没问题。例如,取决于客户端,它可能会将C#的List<Transaction>更改为Transaction[]或类似的东西。您还需要选择正确的绑定类型。通常basicHttpBinding具有最佳的互操作性结果。