사용자 정의 ValueResolver에 값을 전달하기위한 형식에 어려움을 겪고 있습니다. 기본적으로 내 ViewModel을 기반으로 Int 및 Object를 변환하려고합니다. 그러나, 나는 내 ValueResolver에에게 값을 전달받을 수 없습니다사용자 정의 ValueResolver에 값을 전달하는 방법은 무엇입니까?
나는 다음과 같은 사용자 정의 ValueResolver이 : 나는 다음과 같은 코드
같은 하드 코딩 INT를 사용하여 맵을 만들 때 잘 작동public class CustomResolver : ValueResolver<CreateContainerViewModel, Container>
{
private int id = 0;
public CustomResolver(int? sourceId)
{
if(sourceId.HasValue)
id = sourceId.Value;
}
protected override Container ResolveCore(CreateContainerViewModel source)
{
if (id == 0) return null;
else
{
ISession _session = DependencyResolver.Current.GetService<ISessionFactory>().GetCurrentSession();
return _session.Get<Container>(id);
}
}
}
Mapper.CreateMap<CreateContainerViewModel, Container>()
.ForMember(a => a.CurrentContainer, opt => opt.ResolveUsing(src => new CustomResolver(33)));
그러나 나는 시도하고 내 뷰 모델에서 값을 얻을 때 (매핑 예외를 throw) 작동하지 않습니다
Mapper.CreateMap<CreateContainerViewModel, Container>()
.ForMember(dest => dest.CurrentContainer, opt => opt.MapFrom(src => new CustomResolver(src.CurrentContainerId)));
사용자가 ValueResolver에 값을 전달하기위한 올바른 구문의 지시를받을 수 있습니까?
감사
UPDATE :
는 기본적으로 다음과 같이 뭔가를 작성하려고 : 이public class IdToObjectResolver<T> : ValueResolver<int, T> where T : class
{
private ISession _session;
private int id;
public IdToObjectResolver(Nullable<int> sourceId)
{
_session = DependencyResolver.Current.GetService<ISessionFactory>().GetCurrentSession();
if(sourceId.HasValue)
id = sourceId.Value;
}
protected override T ResolveCore(int source)
{
return _session.Get<T>(source);
}
}
이 코드 나던 현재 이해하지만, 단지 INT에 전달하는 방법을 시도. ..
이 페이지 http://automapper.codeplex.com/wikipage?title=Custom%20Value% 20Resolvers는 리졸버에게 제공되는 소스 값을 커스터마이징 할 것이라고 말합니다 - 곧 나옵니다 : – TomL
[.ForMember (dest => dest.SomePropA, opt => opt.ResolveUsing)3210() .FromMember (SRC => src.propA))] [1] [1] : http://stackoverflow.com/questions/5368525/automapper-using-the-structure-returned- by-a-custom-resolver –