有没有比在构造函数中作为参数发送更好的方法来设置许多必需的属性?

eto*_*bot 10 c#

我有一个类,为了做到这一点,工作需要设置8个不同的属性值.我想确保在尝试执行方法之前设置了所有8个属性.我目前已经传入了所有参数并通过构造函数进行设置.有一个更好的方法吗?

Joã*_*elo 9

您可以在不指定所有属性的值的情况下允许创建对象,然后在InvalidOperationException对象状态对于要执行的方法调用有效之前,该方法将抛出if调用,在这种情况下,这将意味着所有8个属性都有效值.

这样,您可以为消费者提供更大的灵活性.它可以在一个时刻创建一个新实例,在另一个时刻设置它的属性,然后再调用该方法.这是一个通过.NET代码库使用的"模式",开发人员已经使用过该模式.


更新:

如果您要添加其他不需要初始化的完整属性集的方法,这也可以简化操作.是的,我们可以使用新的属性集添加另一个构造函数重载,但是如果我们有两个方法都需要一个相同类型的属性进行初始化呢?使用构造函数重载无法解决这个问题.

  • 你能解释为什么这比使用构造函数和编译时安全更好吗? (2认同)