1

流暢なマッピングと自動マッピングを組み合わせたシャープなアーキテクチャ プロジェクトに取り組んでいます。基本的なシャープ アーキテクチャ プロジェクトには、型を自動的にマップするかどうかを決定するメソッド (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 に答える