gpt4 book ai didi

c# - 如何实现只能设置一次的属性

转载 作者:行者123 更新时间:2023-11-30 14:05:55 24 4
gpt4 key购买 nike

我想实现一些只能设置一次的属性。我知道只读,但我希望能够从类外设置值。

情况如下:我有一个类,我将其用作从数据库中读取的某些数据的键。这个键类包含几个属性。

我的第一个想法是制作多个构造函数,我可以在其中设置我需要的属性,但由于“未设置”是大多数这些属性的有效状态,我很快就有了一堆构造函数,我决定这不是最好的方法。

我不能用公共(public) setter 创建属性,因为它们是关键信息,之后更改它们是没有好处的。所以我需要一种从键类外部设置它们一次的方法,因为我不想为每种情况制作 20 个略有不同的构造函数。

是否有一些类似于只读的易于执行的方法来执行此操作,还是我必须自己实现它?

最佳答案

@Fildor 也评论说,Builder pattern在这里可能是合适的。您可以根据需要随时设置构建器类的属性,允许在那里进行多次分配没有坏处。但是一旦你用它来构建你的类,它就会被锁定,然后不允许再进行修改。

class MyClass {
internal MyClass(MyClassBuilder builder) {
MyProp1 = builder.MyProp1;
MyProp2 = builder.MyProp2;
MyProp3 = builder.MyProp3;
}
public string MyProp1 { get; }
public string MyProp2 { get; }
public string MyProp3 { get; }
}

class MyClassBuilder {
public string MyProp1 { get; set; }
public string MyProp2 { get; set; }
public string MyProp3 { get; set; }
public MyClass Build() => new MyClass(this);
}

用法:new MyClassBuilder { MyProp2 = "abc"}.Build()。基于相同的总体思路,也可以使用不同的 API。

关于c# - 如何实现只能设置一次的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com