自动映射器:在 v6.x 中访问目标元信息



从AutoMapper 4移动到

6在 ITypeConverter 中,我们如何访问父上下文,以便我们知道在版本 4 中正在填充什么属性:

context.PropertyMap.DestinationProperty

所以可以做到以下几点:

public class UserDetailsConvertor : ITypeConverter<OAuthProfile, UserDetials>
{
public Dto.Accounts.UserDetials Convert(ResolutionContext context)
{
var src = context.SourceValue as OAuthProfile;
if (src == null) return null;
if (!context.PropertyMap.DestinationProperty.Name.Contains("Internal"))
{
return new UserDetials()
{
Id = src.Id
};
}
if (src.InternalAccountId.IsNullOrEmpty())
{
return null;
}
return new UserDetials()
{
Id = src.InternalAccountId
};
}
}

请注意,用户详细信息正在映射到 2 个属性(内部和提供程序(,这就是上述条件逻辑正在整理的内容。

在 V6 中,从我所看到的来看,这并不明显,有一个项目集合,但这似乎包含整个映射(所有对象(的信息

这一切都过去了。在任何地方捕获和传递该上下文是非常昂贵的。您可能需要改为查看成员解析程序。

最新更新