4

コンストラクターベースの依存性注入、AutoMapperUnityをコードベースで使用しています。

汎用インターフェイスで AutoMapper をラップしました...

public interface IMapper<TSource, TDestination>
{
    TDestination Map(TSource source);
}

そして、このインターフェースを実装するクラス...

public class AutomaticMapper<TSource, TDestination> : IMapper<TSource, TDestination>
{
    public TDestination Map(TSource source)
    {
        return AutoMapper.Mapper.Map<TSource, TDestination>(source);
    }
}

これはうまく機能しますが、AutoMapper 構成で定義するすべてのマッピングに対して、追加の を実行する必要があることを意味しますUnityContainer.RegisterType

これらの型マッピングは、ほとんどの場合、次の形式です。

container.RegisterType<IMapper<ClassA, ClassB>, AutomaticMapper<ClassA, ClassB>>();

Unity にデフォルトのタイプ マッピングを使用するように指示する方法はIMapperありAutomaticMapperますTSourceTDestination?

4

3 に答える 3

9

私たちは実際にほぼ同じことをしています。Unity では、次のように言えます。

unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>));
于 2010-02-04T18:18:16.810 に答える
1
public class AutomaticMapper : IMapper
{
    public TDestination Map<TSource, TDestination>(TSource source)
    {
        return AutoMapper.Mapper.Map<TSource, TDestination>(source);
    }
}
于 2010-02-04T14:05:24.017 に答える
1

おそらくあなたが望むことをするUnity用の自動登録アドインがあります。http://unity.codeplex.com/Thread/View.aspx?ThreadId=59418をご覧ください。

于 2010-02-04T14:12:44.310 に答える