我有一个包含大约 40 个属性(所有值类型)的类型,代表我的业务的一种交易类型。此类的一个实例对应于我数据库中的一行。我想让我的类保持不变,因为它只会用于读取操作,但我不确定如何在初始化期间设置 40 个属性。
通常我对不可变类型使用构造函数初始化,但我想避免编写具有 40 个参数的构造函数。我的属性的 setter 目前是私有(private)的,但我愿意有足够的理由进行更改。是否有处理这种情况的通用方法或解决问题的更好方法?
最佳答案
你的问题与其说是一个有 40 个参数的构造函数,不如说是一个有 40 个字段的类。
我建议将其分解。是否有任何领域以某种方式相关?如果是这样,将它们分组为一个公共(public)对象(例如 EmailInfo),然后让您的大对象仅引用分组对象。
// Instead of this:
foo.EmailHeader
foo.EmailSubject
foo.Email...
// Do this:
foo.Email.Header
foo.Email.Subject
一旦您的类具有较少的直接属性,创建一个采用这些分组对象的构造函数就不是那么糟糕了。
关于c# - 如何实例化一个大的不可变类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3113690/