나는 AutoMapper를 의존성 삽입과 함께 사용하려고합니다. 쉬운 방법입니다. 15 가지 속성을 가진 Source 및 Destination 클래스가 있다고 가정 해 보겠습니다. 일부 속성의 매핑을 수행 할 때 DependencyInjection을 사용하여 서비스를 사용하려고합니다. 그물에서 본 모든 예는 생성자 DI를 수행 할 수있는 ValueResolver (또는 전체 클래스에 대해 TypeResolver)를 사용하여 설명합니다.AutoMapper DependencyInjection을 쉽게 만들었습니다.
발췌문은 다음과 같습니다 (사용 AutoMapper 3.3.1 구문하지만 개념은 여전히 남아있다) :
public class SourceMapping : Profile
{
protected override void Configure()
{
CreateMap<Source, Destination>().ForMember(x => x.Value, opt => opt.ResolveUsing<ValueResolver>());
}
class ValueResolver : IValueResolver
{
private IValueSupplier _valueSupplier;
public ValueResolver(IValueSupplier valueSupplier)
{
_valueSupplier = valueSupplier;
}
public ResolutionResult Resolve(ResolutionResult source)
{
Source src = (Source) source.Value;
return source.New(_valueSupplier.Value * src.MyValue);
}
}
}
이러한 접근 방식은 각각의 DI이 필요한 모든 속성에 대한 해결-클래스를 만드는 나를 강제로.
내가 누락되었지만 DI 구현자를 사용하여 인터페이스 구현을 제공하는 AutoMapper에서 Lambda Expression-Mapping을 입력 할 수있는 방법을 찾을 수없는 것 같습니다.
그래서 나는 이런 식으로 뭔가를해야만 할 것 : 그래서
protected override void Configure()
{
CreateMap<Source, Destination>().ForMember(x => x.Value, opt => opt.MapFrom(src => opt.GetInstance<IValueSupplier>().Value * src.MyValue));
}