wcf:动态调用返回复合类型的服务

时间:2012-03-15 13:05:51

标签: c# wcf

所以我遇到这样的情况:A需要调用B服务,而A只能在运行时知道B地址。但两者都提前签订了相同的服务合同。

到目前为止,我有这个(A):

    using (ChannelFactory<IService1> scf = new ChannelFactory<IService1>(new BasicHttpBinding(), "B's adress"))
    {
        var channel = scf.CreateChannel();
        channel.GetData(5);
        ...
    }

    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);
    }
    [DataContract]
    public class CompositeType
    { 
       [DataMember]
       public bool BoolValue
        ...

       [DataMember]
       public string StringValue
        ...
    }

B公开相同的服务合同。

现在的问题。使用GetData一切正常,但GetDataUsingDataContract接受并返回复合类型 - 似乎B接收具有默认值的对象而不是已发送的对象。可能有什么不对?

1 个答案:

答案 0 :(得分:2)

CompositeType放入程序集C并在A和B中引用它。