C# 使用参数构造函数和Ninject配置Automapper配置文件类

C# 使用参数构造函数和Ninject配置Automapper配置文件类,c#,asp.net-mvc,ninject,automapper-5,C#,Asp.net Mvc,Ninject,Automapper 5,我使用的是Automapper(v5.1.1.0)和Ninject(v3.2.0.0)。我的个人资料类别是: public class ApplicationUserResponseProfile : Profile { public ApplicationUserResponseProfile(HttpRequestMessage httpRequestMessage) { UrlHelper urlHelper = new UrlHelper(httpReq

我使用的是
Automapper
(v5.1.1.0)和
Ninject
(v3.2.0.0)。我的个人资料类别是:

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);
    }
}
但两方面都有错误-

没有为此对象定义无参数构造函数


请帮帮我。我无法使用
Ninject
配置
AutoMapper
配置文件类(具有参数)。有什么不同的方法来解决这个问题吗?

我用不同的方法解决了这个问题。我已经从静态迁移了
automapper
,而不是
Profile
方法

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);
    }
}
公共类ApplicationUserResponseFactory
{
私有MapperConfiguration\u MapperConfiguration;
公共应用程序SerResponseFactory(HttpRequestMessage HttpRequestMessage)
{
UrlHelper UrlHelper=新的UrlHelper(httpRequestMessage);
_mapperConfiguration=新的mapperConfiguration(cfg=>
{

cfg.CreateMap

您可以创建如下解析程序:

public class YourResolver : IValueResolver<ApplicationUser, ApplicationUserResponseModel, string>
{
    HttpRequestMessage HttpRequestMessage { get; }
  
    public YourResolver(HttpRequestMessage httpRequestMessage)
    {
      HttpRequestMessage = httpRequestMessage;
    }
  
    public string Resolve(ApplicationUser source, ApplicationUserResponseModel destination, string destMember, ResolutionContext context)
    {
       //do something with your HttpRequestMessage and return a value;
    }
}
公共类YourResolver:IValueResolver

Mapper.Initialize(cfg =>
        {
            cfg.ConstructServicesUsing((type) => kernel.Get(type));
            cfg.AddProfile(typeof(ApplicationUserResponseProfile));
        });
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);
    }
}
public class YourResolver : IValueResolver<ApplicationUser, ApplicationUserResponseModel, string>
{
    HttpRequestMessage HttpRequestMessage { get; }
  
    public YourResolver(HttpRequestMessage httpRequestMessage)
    {
      HttpRequestMessage = httpRequestMessage;
    }
  
    public string Resolve(ApplicationUser source, ApplicationUserResponseModel destination, string destMember, ResolutionContext context)
    {
       //do something with your HttpRequestMessage and return a value;
    }
}
public class ApplicationUserResponseProfile : Profile
{
    public ApplicationUserResponseProfile()
    {
        CreateMap<ApplicationUser, ApplicationUserResponseModel>()
                 .ForMember(dest => dest.Url, opt => opt.MapFrom<YourResolver>());
    }
}