如何初始化Automapper当信号源类型为未知
问题描述:
我有以下代码:如何初始化Automapper当信号源类型为未知
public static TDest Map2<TDest>(this object sourceObjInstance) where TDest : new()
{
var itemType = typeof(TDest);
var item = Activator.CreateInstance(itemType);
Mapper.Initialize((cfg => cfg.CreateMap<??????, TDest>());
var result = Mapper.Map(sourceObjInstance, item, sourceObjInstance.GetType(), item.GetType());
return (TDest)result;
}
所以,我不知道从哪里得到为mapper.initialize法源对象泛型参数(?????
占位符)。 WCF将自动生成sourceObjInstance
类。
答
Automapper支持动态映射。如果在编译时不知道源/目标类型,请设置CreateMissingTypeMaps
配置属性:
Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = true);
object src = new Src();
object dest = new Dest();
Mapper.Map(src, dest);
1-您不应在每次映射时都进行初始化。在应用程序启动时初始化并创建映射。然后在需要时映射。 2-总是知道你的地图。为每个需要映射到另一个类型的类型创建一个映射。 – Mik