我正在研究一个混合了流畅映射和自动映射的尖端架构项目。一个基本的尖端架构项目已经有一个方法(AutoMappingConfiguration.ShouldMap),它确定是否应该自动映射一个类型。我的目前看起来像这样:
public override bool ShouldMap(System.Type type)
{
if (type == typeof(ActiveUser))
return false;
return type.GetInterfaces().Any(x =>
x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IEntityWithTypedId<>));
}
基本上,使用流畅的映射映射ActiveUser类型,其他所有内容都使用自动映射进行映射,当然除了通用基类。我正处于我将添加更多流利映射类的地步,并且实际上不希望继续向此方法添加if语句以排除它们。我基本上需要方法
bool ShouldMap(System.Type type)
如果泛型类
则返回trueClassMap<type>
存在。
有什么建议吗?
答案 0 :(得分:1)
您可以使用Type.MakeGenericType创建泛型类型,因此假设您有一个包含所有映射的程序集:
public bool ShouldMap(Assembly mappingAssembly, Type type)
{
Type classMapType = typeof(ClassMap<>).MakeGenericType(type);
return mappingAssembly.GetTypes().Any(t => t.IsSubclassOf(classMapType));
}
答案 1 :(得分:0)
您是否考虑过映射所有类,但是对于要显式映射的类(而不是常规的流畅映射)使用Mapping*Override*?