Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DTO/域对象的最佳实践或模式_C# - Fatal编程技术网

C# DTO/域对象的最佳实践或模式

C# DTO/域对象的最佳实践或模式,c#,C#,我在下面有一个类,它被编写为映射web服务响应消息 public class someclassA { public int properyA {get;set;} public int properyB {get;set;} public int properyC {get;set;} public int properyD {get;set;} } public class someclassB { public int properyX {get;set;}

我在下面有一个类,它被编写为映射web服务响应消息

public class someclassA
{
   public int properyA {get;set;}
   public int properyB {get;set;}
   public int properyC {get;set;}
   public int properyD {get;set;}
}

public class someclassB
{
   public int properyX {get;set;}
   public int properyY {get;set;}
   public int properyZ {get;set;}
}
现在要求someClassA使用someClassB中的一些属性,并添加3个计算属性,例如propertyE、propertyF、propertyG等

关于模式的问题是,我应该创建完全不同的someClassAB来拥有someClassA的所有属性和3个新属性,还是应该首先用所有这些附加字段来构造someClassA


干杯。

这是要记住的规则。如果A“是A”B,则使用继承。否则,将它们作为单独的对象。继承只应在子类确实是父类的更具体形式的情况下使用

想想维护。当物体在未来开始越来越分散时会发生什么?现在您使用的类型在给定上下文中只有20%的属性是有意义的


更不用说,如果在不相关的实体之间有清晰的边界,那么代码的可读性就会更高。每次您将继承加入到图片中时,您都有一个在阅读代码时必须跟上的“上下文”。如果混合对象(坦率地说是出于惰性),代码的可读性会受到影响。

如果B中的所有属性也存在于A中,那么最好使用继承来处理。同意Lhibodeaux。模式必须使我们的生活更轻松。是的,DTO必须是具有简单属性的普通对象,但这是对您最好的解决方案。我认为问题更新后,classB中的属性与ClassA完全不同。那么,是否还有另一个类包含ClassA的所有属性和View所需的额外属性?这取决于您的实体实际是什么。你可以走任何一条路。如果B是不同类型的a,那么我将使用继承。如果它们彼此没有关系,则创建一个单独的对象。不要仅仅使用继承来“借用”属性。现在,如果类B是类a的一个“视图”,带有一些计算字段,那么我倾向于将这些作为getter属性放在类a上(因为视图仍然是相同类型的)。