【发布时间】:2018-08-17 21:25:55
【问题描述】:
我正在尝试在 .net core 1.0.1 应用程序中使用 automapper 来根据配置文件映射具有不同逻辑的类型。我也有一些自定义解析器。我无法在自定义解析器中获得 DI 支持。这是我创建映射器的代码。
private IMapper CreateMapper(string srcFormName)
{
switch (srcFormName)
{
case "app1":
{
var configuration1 = new MapperConfiguration(cfg =>
{
cfg.AddProfile<App1Profile>();
});
return configuration1.CreateMapper();
}
case "app2":
{
var configuration2 = new MapperConfiguration(cfg =>
{
cfg.AddProfile<App2Profile>();
});
return configuration2.CreateMapper();
}
default:
return null;
}
}
我正在使用包https://www.nuget.org/packages/AutoMapper.Extensions.Microsoft.DependencyInjection/2.0.1,下面的行已添加到 Startup.cs
services.AddAutoMapper();
我需要一个像下面这样的自定义解析器
public class NameResolver : IValueResolver<MyType1, MyType2, string>
{
private IContextInfo _contextInfo;
//public NameResolver()
//{
//}
public NameResolver(IContextInfo contextInfo)
{
_contextInfo = contextInfo;
}
public string Resolve(ApplicationForm source, StpApplication destination,
string destMember, ResolutionContext context)
{
_contextInfo.RulesExecuted.Add(DateTime.Now.ToString());
return source.FirstName + " " + source.MiddleName + " " + source.LastName;
}
}
但是当我尝试映射时,我得到了一个异常,例如无参数构造函数不存在(在我的解析器上)并且无法映射。我相信这可能是因为创建了我自己的映射器配置,但是我不知道在不创建自己的配置的情况下使用多个配置文件。请帮我。
【问题讨论】:
标签: asp.net-core dependency-injection automapper