所以我遇到这样的情况: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
接收具有默认值的对象而不是已发送的对象。可能有什么不对?
答案 0 :(得分:2)
将CompositeType
放入程序集C并在A和B中引用它。