内部包含多个类的单个 DTO 类

Posted

技术标签:

【中文标题】内部包含多个类的单个 DTO 类【英文标题】:A single DTO class with multiple classes inside 【发布时间】:2016-06-14 15:44:08 【问题描述】:

一个关于 DTO 的简单问题,我有一个 DTO 类 Cars,其中还有其他一些汽车模型的子类。

    public class Cars

    public Ferrari FerrariModel  get; set; 
    public Porshe PorsheModel get; set; 
    public Mustang MustangModel  get; set; 

    public class Ferrari
  
    public string collor get; set; 
    public int year get; set; 
    public double price get; set; 

和 Porshe 和 Mustang 是完全一样的法拉利。问题是我现在不知道如何进行。我尝试这样的事情

Cars cars = new Cars();
FerrariModel fm = new FerrariModel();
cars.FerrariModel.collor = txtCollor.Text;

而且它不起作用,因为我在 cars.FerrariModel.collor ->“对象引用未设置段落 Hum 对象的实例。嗡嗡声对象声明”中收到以下错误。 我必须承认,我什至不知道这是“可能的”,或者我是否正在“发明编程”,所以任何帮助都会非常有用。

    为什么只使用一个类?因为需要在参数中传递单个 DTO:save(Cars car);更新(汽车汽车) 使用第二个单独的类会迫使我“重载”该方法:save(Cars car);保存(法拉利法拉利); 如果我使用单个班级(没有 Ferrari、Porshe 和 Mustang)程序可以工作,但我的 InteliSense 中有很多变量,超过 50 个。

谢谢。

【问题讨论】:

代码做了太多事情,最终破坏了 Single Responsibility Principle。如果模型具有相似的属性,它们可以从 interfaceabstract 类继承。然后你就可以使用通用列表了。 谢谢,我还是个初学者,对接口和抽象类不太了解,最近在研究泛型列表,甚至我用这个方法就像一个传输数据对象,你喜欢吗它“重”吗?因为我真的不希望有很多方法来完成几乎相同的操作 【参考方案1】:

您需要将您的 fm 实例分配给您的 Cars.FerarriModel 属性。

Cars cars = new Cars();
FerrariModel fm = new FerrariModel();
cars.FerrariModel = fm;
cars.FerrariModel.collor = txtCollor.Text;

甚至只是:

Cars cars = new Cars();
cars.FerrariModel = new FerrariModel()  collor = txtCollor.Text ;

【讨论】:

老兄!我简直不敢相信它真的有效!哈哈我以为你们连“疯狂的问题”都看不懂哈哈!!!真的谢谢大佬!我浪费了很多时间来做这件事,我永远不会独自完成,真的谢谢你!!! 没问题。阅读您的异常消息 - 它告诉您未设置您的参考之一。这通常指向链式语句(或先前分配的变量)为空(由于尚未实例化)。此外,如果您可以在调试器或记录器中获取异常详细信息,那么您会看到堆栈跟踪应该直接将您指向有问题的代码行。

以上是关于内部包含多个类的单个 DTO 类的主要内容,如果未能解决你的问题,请参考以下文章

内部类

java 内部类的初学习

00053_内部类

Lambda表达式和匿名内部类的异同

内部类之静态内部类

16.内部类