2010-11-19 8 views
7

こんにちは私はAutoMapperを使用してモデルからDtoに移動しています。 1つでTypeConverter変換を行うためにタイプコンバータで使用する必要があるインタフェース(サービス)を挿入する必要があります。AutoMapper TypeConverterカスタムコンストラクタ

これをAutoMapperでどうすれば実現できますか?

+0

あなたは依存性の注入パッケージを使用していますか? – BeRecursive

答えて

12

TypeConverterクラスにサービスを受け入れるだけでコンストラクタを作成することはできますか?むしろ一般的なConvertUsingを使用するよりも、サービスで構成さあなたのTypeConverterの新しいインスタンスを渡す...

public class MyTypeConverter : TypeConverter<String, String> 
    { 
     public MyTypeConverter(IMyService service) 
     { 
      MyService = service; 
     } 

     public IMyService MyService { get; set; } 

     protected override string ConvertCore(string source) 
     { 
      //use service 
     } 
    } 

使用法:

 Mapper.CreateMap<string, string>() 
        .ConvertUsing(new MyTypeConverter(_myService)); 
+0

ああ、私はそれを行うことができるか分からなかった。 ConvertUsing () – Raffaeu

+2

あなたが必要とするサービスが 'IMapper'の場合、' ITypeConverter <>。Convert() 'メソッドですぐに利用可能な' ResolutionContext context'が現在のマッパーを提供します。 –

+0

素晴らしいコメントChris Walsh homie –

関連する問題