Я использую Ninject и Ninject.Extensions.ChildKernel.
У меня есть следующие интерфейсы IService
и IServiceProvider
Моя реализация IServiceProvider
использует экземпляр IService
public interface IServiceProvider
{
IService Service { get; }
}
public class ServiceProvider : IServiceProvider
{
public ServiceProvider(IService service)
{
this.Service = service;
}
public IService Service { get; private set; }
}
Сейчас делаю следующее
var container = new StandardKernel();
container.Bind<IService>().To<Service>();
container.Bind<IServiceProvider>.To<ServiceProvider>();
// later in code
var child = new ChildKernel(container);
child.Bind<IService>().To<ChildService>();
var provider = child.Get<IServiceProvider>();
var serviceA = provider.Service; // <-- Service
var serviceB = child.Get<IService>(); // <-- ChildService
Как видите, child.Get<IService>()
работает, как и ожидалось, и возвращает ChildService, но я также хочу, чтобы каждый экземпляр IServiceProvider, созданный с дочерним ядром, использовал ChildService. Возможно ли это с Ninject.Extensions.ChildKernel
Обратите внимание: я уже публиковал это в Ninject.Extensions.ChildKernel
системе отслеживания проблем, но я даже не уверен, что это проблема, или я просто использую его неправильно.