1

我正在研究一个混合了流利映射和自动映射的清晰架构项目。一个基本的sharp-architecture项目已经有一个方法(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)

如果泛型类返回 true

ClassMap<type> 

存在。

有什么建议么?

4

2 回答 2

1

您可以使用Type.MakeGenericType创建泛型类型,因此假设您有一个包含您可以执行的所有映射的程序集:

public bool ShouldMap(Assembly mappingAssembly, Type type)
{
    Type classMapType = typeof(ClassMap<>).MakeGenericType(type);
    return mappingAssembly.GetTypes().Any(t => t.IsSubclassOf(classMapType));
}
于 2011-05-11T20:19:05.517 回答
0

您是否考虑过映射所有类,但对要显式映射的类使用Mapping* Override *(而不是常规的流畅映射)?

于 2011-05-11T20:18:54.913 回答