В основном я использовал Ninject, поэтому извиняюсь, если я перепутаю терминологию.Регистрация модуля Autofac
Я создал модуль журнала для обработки NLog, используя имя класса назначения в качестве имени журнала. Это очень похоже на это: http://docs.autofac.org/en/latest/examples/log4net.html?highlight=log4net
У меня также есть модуль, созданный на моем уровне сервиса, который заботится обо всех регистрах уровня обслуживания. Похоже, это:
public class ServiceModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(x => new AccountService(x.Resolve<ILogger>()))
.As<IAccountService>()
.InstancePerRequest();
}
}
Вот мой autofac регистрация:
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterModule(new LoggingModule());
builder.RegisterModule(new ServiceModule());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
app.UseAutofacMiddleware(container);
app.UseAutofacMvc();
Во время выполнения я получаю исключение говоря ILogger не было зарегистрировано, я упускаю что-то о том, как работают модули, которые вызывают ILogger не будет отображаться в моем сервисном модуле?
Ok, что имеет смысл, так как я попытался изменить свою регистрацию на тип регистрации и она работает. Как я могу заставить модуль работать с заявлениями о разрешении, любую документацию, на которую вы можете указать мне эту тему? – Dan
Взгляните на 'IRegistrationSource': http://docs.autofac.org/en/latest/advanced/registration-sources.html –
Спасибо, что должно работать – Dan