Когда я пытаюсь установить PARAMETER с помощью Xml-конфигурации, я получаю следующую ошибку:
Ни один из конструкторов, найденных с 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' по типу "LM.AM.Core.Services.EmailService" можно вызвать с помощью доступного услуг и параметров: невозможно разрешить параметр "System.String testSmtp 'конструктора' Void.ctor(System.String) '.
Вот соответствующие файлы:
web.config
<configSections>
<section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration" />
</configSections>
<autofac>
<components>
<component type="LM.AM.Core.Services.EmailService , LM.AM.Core" service="LM.AM.Core.Infrastructure.Services.IEmailService , LM.AM.Core.Infrastructure">
<parameters>
<parameter name="testSmtp" value="abc" />
</parameters>
</component>
</components>
</autofac>
Класс обслуживания
public class EmailService : IEmailService
{
public string _testSmtp;
public EmailService (string testSmtp)
{
_testSmtp = testSmtp;
}
}
Регистрация
builder.RegisterType<EmailService>().As<IEmailService>().SingleInstance();
Global.asax
var builder = new ContainerBuilder();
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
builder.RegisterModule<Core.ModuleInstaller>();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
AutofacContainer.Container = builder.Build();
var emailSvc = AutofacContainer.Container.Resolve<IEmailService>();
Я проверил, что контейнер знает параметр xml, и я следил за Wiki как можно ближе, но по какой-то причине параметр не разрешает единственный конструктор, и я получаю вышеупомянутую ошибку.
Это должно быть довольно просто. Может ли кто-нибудь дать некоторые предложения о том, что я может попытаться заставить это работать?