3

以下哪项是实施 poco 的最佳方式?

选项1:

public class PocoOption1
{
  public PocoOption1(int val1,string val2)
  {
    Val1=val1; Val2=val2;
  }

  public int Val1{get;private set;}
  public int Val2{get;private set;}
}

选项 2:

public class PocoOption2
{           
  public int Val1{get;set;}
  public int Val2{get;set;}
}

每种方法的潜在利弊是什么?有关系吗?有人说一个 DTO 应该只设置一次。是规定还是意见??

4

2 回答 2

3

使用新的 C# 语法,您可以执行以下操作:

Customer customer =  new Customer{ Id = 1, 
     Name="Dave",                                             
     City = "Sarasota" };

您可以安全地使用选项 2。

在此处查看

于 2009-03-11T19:46:59.280 回答
3

选项略有不同。选项 1 只允许您设置 Val1、Val2 一次。选项 2 允许您设置和重置这些值。

一般来说,我是公共默认构造函数的粉丝。它使 API 更易于使用。Krzysztof Cwalina 和 Brad Abrams 在框架设计指南一书中对此进行了详细讨论。以下是重点:

  • 使用“创建、设置、调用”模式。有一个没有参数的默认构造函数。然后允许在对象上设置属性(以任何顺序)。然后允许调用方法。
  • 默认构造函数是对象构造的规范方法。这将是用户尝试的第一个选项。
  • 强制用户在构建时选择参数可能很困难。此外,一些参数可能是可选的。
  • 让您的对象在有限的时间内处于无效状态。抛出异常以传达 API 滥用。(如果一个对象有两个依赖项,如果用户尝试在没有必要设置的情况下调用方法,则抛出 InvalidOperationException。)

在我看来,选项2是要走的路。

于 2009-03-11T20:10:40.410 回答