我似乎无法让这三个人一起工作。
我使用 1 种方法将其缩小到一个非常简单的服务:
[System.ServiceModel.ServiceContract]
public interface Icontract
{
[System.ServiceModel.OperationContract]
void Ping();
}
public class contract : Icontract
{
public void Ping()
{ }
}
我有一个看起来像这样的工厂:
public class ServiceFactory
{
private readonly IKernel _kernel;
public ServiceFactory(IKernel kernel)
{
_kernel = kernel;
}
public NinjectServiceHost<T> GetService<T>()
{
return _kernel.Get<NinjectServiceHost<T>>();
}
}
如果我像这样创建服务......
_tmp = new ServiceHost(typeof(ConsoleApplication1.contract));
_tmp.Open();
...发现工作得很好。但是,如果我像这样使用工厂......
_tmp = _factory.GetService<ConsoleApplication1.contract>();
_tmp.Open();
...服务不再被发现。该服务的其他一切都按预期工作。
任何人都喜欢让 Discovery 以这种方式工作,还是我做错了什么?