当我尝试使用 Xml 配置设置参数时,出现以下错误:
无法使用可用服务和参数调用类型为“LM.AM.Core.Services.EmailService”的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”的构造函数:无法解析参数“System.String testSmtp”构造函数'Void .ctor(System.String)'。
以下是相关文件:
网络配置
<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();
全球.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,但是由于某种原因,该参数没有在唯一的构造函数上解析,并且我收到了上述错误。
这应该很容易上手。任何人都可以就我可以尝试使其正常工作提供一些建议吗?