我想实现一些只能设置一次的属性.我知道readonly但我希望能够从课外设置值.
情况如下:我有一个类,我用它作为从数据库读取的一些数据的键.此密钥类包含多个属性.
我的第一个想法是创建多个构造函数,我可以像我需要的那样设置属性,但由于"not set"是大多数这些属性的有效状态,我很快就有了一堆构造函数,我认为这不是最好的方法.
我无法使用公共设置器制作属性,因为它们是关键信息,之后更改它们也没有用.所以我需要一种方法从key-class外面设置一次,因为我不想为每种情况制作20个稍微不同的构造函数.
是否有一些像readonly一样容易去做的方法或者我必须自己实现它?
小智 6
正如@Fildor所评论的那样,Builder模式可能适用于此处.您可以根据需要随时在构建器类上设置属性,允许在那里进行多次分配没有任何害处.但是一旦你用它来构建你的类,那么它就被锁定了,然后就不再允许修改了.
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);
}
Run Code Online (Sandbox Code Playgroud)
用法:new MyClassBuilder { MyProp2 = "abc" }.Build().基于相同的一般想法,也可以使用不同的API.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |