比方說,我們有映射兩個源類型,和一個目的:「商店」對象
class TSource
{
public float A { get; set; }
public float B { get; set; }
}
class TSupport
{
public float C { get; set; }
public float D { get; set; }
}
class TDestination
{
public float A { get; set; }
public float B { get; set; }
public float C { get; set; }
public float D { get; set; }
}
,並與一些方法獲得TSupport的情況下,使用TSource例如:
Mapper.CreateMap<TSource, TDestination>();
Mapper.CreateMap<TSupport, TDestination>();
//...
var support = GetSupportInstance(source);
var destination = Mapper.Map<TSource, TDestination>(source);
Mapper.Map(support, destination);
這也可以在單來完成:
private TSupport GetSupportInstance(TSource source)
所以,通常情況下,我會用雙重映射做到這一點使用手動決心映射:
Mapper.CreateMap<TSource, TDestination>()
.ForMember(desc => desc.C, opt => opt.ResolveUsing(src =>
{
var support = GetSupportInstance(src);
return support.C;
}))
.ForMember(desc => desc.D, opt => opt.ResolveUsing(src =>
{
var support = GetSupportInstance(src);
return support.D;
}));
正如你所看到的,我使用的是GetSupportInstance兩次,爲每個屬性。所以,最後,我的問題是 - 是否有可能獲得一次映射的支持,以某種方式存儲它,並在不同屬性的映射中重用它?
這是否會遵守AssertConfigurationIsValid'的'財產檢查? – lentinant
它不會。繼續,我正在努力 – nocodename
那麼,你可以'忽略()'屬性'C'和'D',然後'AssertConfigurationIsValid'通過。 – nocodename