Я пытаюсь внедрить свои зависимости в устаревший веб-сервис ASP.NET .asmx, но я нахожу их пустыми. Вот мой код:
Ninject переплетный модуль:
public class NinjectBindings : Ninject.Modules.NinjectModule
{
public override void Load()
{
Bind<IClientContextFactory>().To<ClientContextFactory>();
Bind<IMapper>().ToMethod(AutoMapper).InSingletonScope();
}
private IMapper AutoMapper(Ninject.Activation.IContext context)
{
Mapper.Initialize(config =>
{
config.ConstructServicesUsing(type => context.Kernel.Get(type));
// Users
config.CreateMap<User, UserDto>();
// Usergrid
config.CreateMap<UserDto, UserGridDetails>();
// Supervisor
config.CreateMap<User, SupervisorDto>();
// Branch
config.CreateMap<Branch, BranchDto>();
});
Mapper.AssertConfigurationIsValid(); // optional
return Mapper.Instance;
}
}
Затем я создаю экземпляр ядра в tGlobal.asax:
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new NinjectBindings());
return kernel;
}
В моем веб-сервисе (.asmx):
[Inject]
public IClientContextFactory contextFactory { get; set; }
[Inject]
public IMapper mapper { get; set; }
public GridService()
{
contextFactory = DependencyResolver.Current.GetService<IClientContextFactory>();
mapper = DependencyResolver.Current.GetService<IMapper>();
}
Позже я попытаюсь использовать свои зависимости следующим образом:
List<UserGridDetails> userList = new User(contextFactory, mapper).GetUsers();
Здесь я считаю, что и contextFactory, и экземпляры mapper равны нулю Я отладил приложение и убедился, что весь приведенный выше код выполняется. Что я делаю не так?