我正在使用 AutoFac 进行依赖注入,并且global.asax文件中有以下代码。
builder.RegisterType<GenderMapper>()
.As<ICodeMapper>().Named<ICodeMapper>(ValueSets.Gender.ToString());
builder.RegisterType<LanguageMapper>()
.As<ICodeMapper>().Named<ICodeMapper>(ValueSets.Language.ToString());
builder.RegisterType<MaritalStatusMapper>()
.As<ICodeMapper>().Named<ICodeMapper>(ValueSets.MaritalStatus.ToString());
builder.RegisterType<RelationshipMapper>()
.As<ICodeMapper>().Named<ICodeMapper>(ValueSets.Relationship.ToString());
builder.Register<Antlr.Runtime.Misc.Func<string, ICodeMapper>>(c =>
{
var componentContext = c.Resolve<IComponentContext>();
return (roleName) =>
{
var codeMapper = componentContext.ResolveNamed<ICodeMapper>(roleName);
return codeMapper;
};
});
ValueSets枚举在哪里。我这样解决服务:
var codeMapper = _codeMapperFactory(mapperInstanceName);
where_codeMapperFactory实现ICodeMapper并且是上面注册的 4 个映射器的基本抽象类。
问题是,无论 be 的值是什么mapperInstanceName,我总是让映射器最后注册(即。RelationshipMapper)。
当我调试时,被调用的构造函数是RelationshipMapper传递给工厂的参数的值。
这可能是什么原因?
精慕HU
相关分类