C# Windows通信基础空引用错误

C# Windows通信基础空引用错误,c#,wcf,interface,C#,Wcf,Interface,我试图在我的应用程序中使用Windows Communication Foundation(WCF)进行测试,但得到了一个空对象。我是新的使用WCF,所以任何帮助将不胜感激 据我所知,每个主机都有一个服务类型(类)。我有几个接口和类要测试。我的目标是使一个主类具有其他主类的实例,这样我就不必运行多个主机。下面是我的一些代码 主人- 接口- [ServiceContract] public interface IMyFun { [OperationContract] string

我试图在我的应用程序中使用Windows Communication Foundation(WCF)进行测试,但得到了一个空对象。我是新的使用WCF,所以任何帮助将不胜感激

据我所知,每个主机都有一个服务类型(类)。我有几个接口和类要测试。我的目标是使一个主类具有其他主类的实例,这样我就不必运行多个主机。下面是我的一些代码

主人-

接口-

[ServiceContract]
public interface IMyFun {
    [OperationContract]
    string Echo(string msg);

    IDataSources DataSources { [OperationContract]get; [OperationContract]set; }
}


[ServiceContract]
public interface IDataSources {
    [OperationContract]
    void Add(DataSource dataSource);
    [OperationContract]
    void Remove(DataSource dataSource);
}
类-我试图创建一个基类,这样就不必运行多个主机

public class MyFun : IMyFun {

    public DataSources _dataSources;

    public MyFun () {
        _dataSources = new DataSources();
    }

    public string Echo(string msg) {
        return msg;
    }

    public IDataSources DataSources { get { return _dataSources; } set {_dataSources = (DataSources)value;} }
}

public class DataSources : IDataSources{
....//Several methods and properties
}
试验-

public void MyTest() {

        EndpointAddress address = new EndpointAddress("http://localhost:8090/MyFun");
        BasicHttpBinding binding = new BasicHttpBinding();
        ChannelFactory<IMyFun> factory = new ChannelFactory<IMyFun>(binding, address);
        IMyFun channel = factory.CreateChannel();
        Assert.AreEqual("Test", channel.Echo("Test"));
        IDataSources dataSources = channel.DataSources;
        dataSources.Add(newDataSource);         
    }
数据源为空。这就是原因

dataSources.Add(newDataSource);

由于空异常错误而失败。

您可能需要执行类似于
频道的操作。获取\u数据源。Intellisense肯定会告诉您,只需键入
频道。
并查看可用成员的显示内容。将属性的访问器作为服务操作公开是非常罕见的。
IDataSources dataSources = channel.DataSources;
dataSources.Add(newDataSource);