2016-09-28 1 views
1

Automapper(v5.1.1.0)とNinject(v3.2.0.0)を使用しています。パラメータコンストラクタとNinjectでオートマトンプロファイルクラスを設定する

public class ApplicationUserResponseProfile : Profile 
{ 
    public ApplicationUserResponseProfile(HttpRequestMessage httpRequestMessage) 
    { 
     UrlHelper urlHelper = new UrlHelper(httpRequestMessage); 
     CreateMap<ApplicationUser, ApplicationUserResponseModel>() 
      .ForMember(dest => dest.Url, opt => opt.MapFrom(src => urlHelper.Link("GetUserById", new { id = src.Id }))); 
    } 

    public ApplicationUserResponseModel Create(ApplicationUser applicationUser) 
    { 
     return Mapper.Map<ApplicationUserResponseModel>(applicationUser); 
    } 
} 

そしてAutoMapperWebConfigurationは次のとおりです:マイプロフィールクラスがある

var config = new MapperConfiguration(
      c => 
      { 
       c.AddProfile(typeof(ApplicationUserResponseProfile)); 
      }); 
var mapper = config.CreateMapper(); 
kernel.Bind<IMapper>().ToConstant(mapper); 

と異なる方法:

Mapper.Initialize(cfg => 
     { 
      cfg.ConstructServicesUsing((type) => kernel.Get(type)); 
      cfg.AddProfile(typeof(ApplicationUserResponseProfile)); 
     }); 

Mapper.Initialize(cfg => 
     { 
      cfg.AddProfile<ApplicationUserResponseProfile>(); // unable to configure 
     }); 

私もNinjectのカーネルにそれをバインドしようとしています

しかし、両方の方法でrror -

このオブジェクト

のために定義されていませんパラメータなしのコンストラクタは、私を助けてください。 Ninjectとプロファイルクラス(パラメータを持つ)を設定できません。この問題を解決する方法はありますか?

答えて

1

私はこの問題を別の方法で解決しました。私はProfileの代わりに、automapperを静的から移行しました。私は、移行手順here

を発見した

public class ApplicationUserResponseFactory 
{ 
    private MapperConfiguration _mapperConfiguration; 
    public ApplicationUserResponseFactory(HttpRequestMessage httpRequestMessage) 
    { 
     UrlHelper urlHelper = new UrlHelper(httpRequestMessage); 
     _mapperConfiguration = new MapperConfiguration(cfg => 
     { 
      cfg.CreateMap<ApplicationUser, ApplicationUserResponseModel>() 
       .ForMember(dest => dest.Url, opt => opt.MapFrom(src => UrlHelper.Link("GetUserById", new { id = src.Id }))); 
     }); 

    } 

    public ApplicationUserResponseModel Create(ApplicationUser applicationUser) 
    { 
     return _mapperConfiguration.CreateMapper().Map<ApplicationUserResponseModel>(applicationUser); 
    } 
} 

関連する問題