2017-01-06 8 views
0

I(バージョン4.2)登録AutoMapperは

public class ModelMapperProfile : Profile 
{ 

    protected override void Configure() 
    { 
     CreateMap<Case, CaseModel>(); 
     CreateMap<CaseDetail, CaseDetailModel>(); 
    } 
} 
public static class AutoMapperService 
{ 
    public static MapperConfiguration Initialize() 
    { 
     MapperConfiguration config = new MapperConfiguration(cfg => 
     { 
      cfg.AddProfile<ModelMapperProfile>(); 
     }); 

     return config; 
    } 
} 

そして、私は次のように団結を使用して依存関係を登録...マッピングを登録するには、次のコードを持ってここに

public static void RegisterTypes(IUnityContainer container) 
{ 

    container.LoadConfiguration(); 
    var mapper = AutoMapperService.Initialize() 
           .CreateMapper(); 
    container.RegisterInstance<IMapper>(mapper); 
} 

私のサービスのコンストラクタを失敗します..

public TaxLiabilityCaseService(IMapper mapper, 
     IUnitOfWork unitofWork, 
     IRepository<Case> caseR, 
     IRepository<CaseDetail> caseDetailR) 
    { 
     _mapper = mapper; 
     _unitofWork = unitofWork; 
     _caseR = caseR; 
     _caseDetailR = caseDetailR; 
    } 

そして私は、次のエラーメッセージ..

を得ました

現在の型AutoMapper.IMapperはインタフェースであり、構築できません。型マッピングがありませんか?

Answers found here did not work for me

私はここに

答えて

1

をしないのですする手順(MVC5)は、次の試してみてください。

はユニティNugetパッケージを取得します。

Unity.Mvc5 

は、このクラスを作成します。

public class MapperConfig 
    { 
     public static IMapper Mapper { get; set; } 
     public static void RegisterProfiles() 
     { 
      var config = new MapperConfiguration(cfg => 
      { 
       // add profiles here 
      }); 
      config.AssertConfigurationIsValid(); 
      Mapper = config.CreateMapper(); 
     } 
    } 
を (パッケージによって作成された) UnityConfigファイルで

、これを追加します。

public static void RegisterComponents() 
    { 
      var container = new UnityContainer(); 
      container.RegisterInstance<IMapper>(MapperConfig.Mapper); 
    } 

Global.asaxでは、これらを追加します。

protected void Application_Start() 
     { 
      MapperConfig.RegisterProfiles(); 
      UnityConfig.RegisterComponents(); 
     } 

あなたは、この後に良いことがあります。

+0

最初のもの:実際のオブジェクトを登録する必要があり、nullが許可されていないため動作しません。 –

+0

@ user2984500 ...あなたはどのようなプロジェクトに取り組んでいますか? 「マッパ」とは何ですか?正しい軌道に乗っていますが、適切に構造化する必要があります。 –

+0

MVC 5で、AutoMapperをワイヤリングしてエンティティとモデルの間をマッピングしようとしています。 "WebActivatorEx.PreApplicationStartMethod"を使用して依存関係をブートストラップします(単一性)。 –