2012-03-15 82 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