2012-03-15 89 views
2

所以我有这样的情况:A需要调用B服务,A只知道B地址,只有在运行时。但两者都提前有相同的服务合同。wcf:动态调用返回复合类型的服务

到目前为止,我有这个(在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

是'CompositeType'在组件C中定义所使用A和B两者?如果不是,它在哪里定义? – 2012-03-15 13:13:31

+0

@Daniel Hilgarth它在A和B都以相同的方式定义。嗯,我会试试看。 – ren 2012-03-15 13:19:24

+0

@Daniel Hilgarth是的,它的工作!谢谢。 – ren 2012-03-15 14:33:53

回答

2

CompositeType成组件C和参考,在A和B