我不断收到“需要有一个带有 0 args 或只有可选 args 的构造函数。(参数 'type')”

Mik*_*art 2 c# automapper automapper-9

我使用的是版本 9。我使用的是基于配置文件的配置。当我运行应用程序 Mapper.Map<>() 方法抛出以下异常:

JobAssist.Services.ResumeBankMgmt.API.Application.ViewModels.ResumeBankViewModel 需要有一个带有 0 args 或只有可选 args 的构造函数。(参数“类型”)

我不知道是什么原因造成的。

Mik*_*art 6

问题是我有一个参数的名称与我的类属性不完全一样。请参阅我将构造函数中的“类别”更改为“resumeCategories”。

原始代码:

public class ResumeBankViewModel
{
        public List<ResumeCategoryViewModel> ResumeCategories { get; set; }


        public ResumeBankViewModel(int id, int jobSeekerID, List<ResumeViewModel> resumes, List<ResumeCategoryViewModel> categories)
Run Code Online (Sandbox Code Playgroud)

新代码:

public class ResumeBankViewModel
{
        public List<ResumeCategoryViewModel> ResumeCategories { get; set; }


    public ResumeBankViewModel(int id, int jobSeekerID, List<ResumeViewModel> resumes, List<ResumeCategoryViewModel> resumeCategories)
Run Code Online (Sandbox Code Playgroud)


Pie*_*rre 2

经典映射适用于基于源成员的映射: https ://docs.automapper.org/en/latest/Construction.html

如果您无法更改具有与成员不同的参数的构造函数的类(例如在合约中),则可以使用ConstructUsing.

您可以像这样使用它来指定参数:

Mapper.CreateMap<ObjectFrom, ObjectTo>()
    .ConstructUsing(x => new ObjectTo(arg0, arg1, etc));
Run Code Online (Sandbox Code Playgroud)

在此处查看完整答案:Automapper - 如何映射到构造函数参数而不是属性设置器