我正在使用AutoMapper,我在下面配置的条件映射器似乎工作正常,但我无法弄清楚如何关闭它的验证(例如MemberList.None
),就像在显式{ {1}}在它下面打电话。
CreateMap
暂时想出这个粗略的等价物。仍然想知道是否有办法用public static void Configure(IMapperConfigurationExpression cfg) {
// I want to put a MemberList.None on this
cfg.AddConditionalObjectMapper().Where((s, d) => {
return s == typeof(BusinessObjects.Tab) &&
d.Namespace == "DocuSign.eSign.Model" && //is in model namespace
d.GetMembers().FirstOrDefault(m => m.Name == "TabId") != null; //has a property TabId makes it a DocuSign Tab object
});
cfg.CreateMap<BusinessObjects.RequestModels.SigningEnvelope, ds.EnvelopeDefinition>(MemberList.Source);
}
方法实现这一点。
AddConditionalObjectMapper
答案 0 :(得分:0)
自动映射配置文件类中有一个名为ForAllMaps
的实例方法,它允许您迭代有条件创建的映射。所以我创建了一个继承自Profile
的新类,并且能够使用下面的代码段实现我的原始目标。
public class DocuSignTabsMappingConfiguration: Profile {
public DocuSignTabsMappingConfiguration() {
AddConditionalObjectMapper()
.Where((s, d) => {
return s == typeof(BusinessObjects.Tab) &&
d.Namespace == "DocuSign.eSign.Model" &&
d.GetMembers().FirstOrDefault(m => m.Name == "TabId") != null;
});
ForAllMaps((tm, exp) => exp.ValidateMemberList(MemberList.None));
}
}
在我的主要Mapper配置中,用以下代码替换了我的旧代码块:
cfg.AddProfile(typeof(DocuSignTabsMappingConfiguration));