我正在努力將值傳遞給自定義ValueResolver的格式。我基本上試圖將Int轉換爲基於我的ViewModel的對象。但是,我不能得到它的價值將它傳遞給我的ValueResolver如何將值傳遞給自定義ValueResolver?
我有以下的自定義ValueResolver:
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);
}
}
}
當我創建使用硬編碼INT類似下面的代碼
地圖它工作正常Mapper.CreateMap<CreateContainerViewModel, Container>()
.ForMember(a => a.CurrentContainer, opt => opt.ResolveUsing(src => new CustomResolver(33)));
,但它不工作(投擲映射除外),當我嘗試從我的視圖模型中獲得的價值
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 2012-02-15 16:20:49
[.ForMember(dest => dest.SomePropA,opt => opt.ResolveUsing().FromMember(SRC => src.propA))] [1] [1]:http://stackoverflow.com/questions/5368525/automapper-using-the-structure-returned- by-a-custom-resolver –
2014-07-17 13:17:00