隐式操作符会让dto变得很臭吗?

  • 本文关键字:dto 操作符 automapper dto
  • 更新时间 :
  • 英文 :


我正在做的项目有:

public class MyObjectDTO
{
    public string Lorem { get; set; }
    public string Ipsum { get; set; }
    public string Dolor { get; set; }
}
public class MyObjectSummaryDTO
{
    public string Lipsum { get; set; }
}

我有一个从MyObjectDTO到MyObjectSummaryDTO的映射。

根据Dolor的不同,MyObjectSummaryDTO.Lipsum的取值为LoremIpsum

在一个dto上添加隐式操作符会破坏dto的模式吗?我可以扩展AutoMapper来包含这个逻辑吗?我不想再添加一个图层,只是为了从一个对象获得一个外观。

不,您不希望将此功能隐藏在您的automapper配置中。我保证在将来的某个时候,另一个程序员会对这个突然改变的值感到非常困惑。

相反,提供一个GetLipsum()函数,该函数包含用于确定返回哪个值的业务逻辑。这样,找出Lipsum的值来自何处的流程仍然驻留在程序的执行路径中。

一般我会说在ViewModel和模型术语在这里,但我不确定如果你的摘要是ViewModel或不是。无论哪种方式,业务逻辑都应该驻留在您的模型层中。

public class MyObjectDTO
{
    public string Lorem { get; set; }
    public string Ipsum { get; set; }
    public string Dolor { get; set; }
    public string GetLipsum() { //Automapper smartly maps this automatically to Lipsum
         return Dolor == "Amet" ? "Lorem" : "Ipsum";
    }
}
public class MyObjectSummaryDTO
{
    public string Lipsum { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新