如何使用AutoMapper映射到具有只读属性的类?

首先,这不是AutoMapper mapping properties with private setters的重复项,因为它处理的是“具有私有设置程序的属性”,不是只读设置程序。虽然我很乐意合并,但是如果需要的话。

public class Example{

 public string PrivateSetter { get; private set;}
 public string ReadonlyProperty { get; }

}

现在可为空的引用类型是一回事。我想创建遵循该做法的dto /模型。但是,如果我有一个属性为public string Name { get; set; }的类,则会收到警告,提示Name可能为null。因此,我想将属性更改为在构造函数中初始化的只读属性public string Name { get; }。甜!那使我的无效警告消失了。但是现在在运行时繁荣起来,我的自动映射器死了。它找不到无参数的构造函数。

现在解决此问题的一种方法是像这样设置我的映射器:


public class Sourceclass
{
  public string Name { get; }
}

public class DestinationClass
{

  public DestinationClass(string name)
  { 
    Name = name; 
  }

  public string Name { get; }
}

Mapper.CreateMap<Sourceclass,DestinationClass>()
            .ConstructUsing(s => new DestinationClass(s.Name));

但是那真是垃圾!现在,我需要在.ConstructUsing()方法中以正确的顺序手动映射每个属性。哪种方法违反了使用 Automapper 的目的。

所以我的问题是如何使用 Automapper 映射到具有只读属性的类;无需使用.ConstructUsing()`并将每个属性手动映射到构造函数中?

owenlixuan 回答:如何使用AutoMapper映射到具有只读属性的类?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3097098.html

大家都在问