A
B
和
C
,我需要一个外部服务来注入一些额外的数据。因此,我写了一封信
ValueResolver<T>
哪里
T
B
或
C
OR
运算符,我使用泛型
T
在这里
为清楚起见,我的值解析器如下所示:
public class MyValueResolver<T>: IValueResolver<A, T, string>
{
private readonly IMyService _service;
public MyValueResolver(IMyService service)
{
_service = service;
}
public string Resolve(A source, T destination, string destMember, ResolutionContext context)
{
// do something using only source and _service.
return ...;
}
}
现在,在我的创业公司,我注册automapper如下
services.AddAutoMapper();
. 因此,当我在应用程序的任何地方使用它时,我只需要注入
IMapper
在构造函数中,它将解析
MyValueResolver
具有
IMyService
MyValueResolver<B>
和
MyValueResolver<C>
. 我尝试了以下方法:
var mappingConfig = new MapperConfiguration(cfg => {
cfg.AddProfile(new MappingProfile());
cfg.ConstructServicesUsing(MyValueResolver =>
new MyValueResolver<B>(service));
cfg.ConstructServicesUsing(MyValueResolver =>
new MyValueResolver<C>(service));
});
var mapper = new Mapper(mappingConfig);
MyValueResolver<C>
到
MyValueResolver<B>
cfg.ConstructServicesUsing(MyValueResolver<C> => new MyValueResolver<C>(service));
有没有什么解决办法,或者我可以使用另一种模式?