gpt4 book ai didi

c# - 使类字段在事后只读

转载 作者:行者123 更新时间:2023-11-30 19:42:59 25 4
gpt4 key购买 nike

我在一个框架中工作,该框架强制我使用默认构造函数创建一个类的实例,因此不幸的是我不能使用“只读”并将参数传递给该字段。

在创建实例后,我打算立即通过公共(public)属性设置字段,除非有更合适的方法。

是否可以强制此字段在设置后只读?不在属性集中使用 bool 或一些计数器逻辑?

用一些伪代码更新

public class SomeClass
{
public Create()
{
object = Framework.CreateClass<NeedArgument>();
object.mustSet = value;
}
}

public class NeedArgument : FrameworkBase
{
public mustSet;
public NeedArgument(){}
public NeedArgument(value) { mustSet = value }

}

最佳答案

不,没有什么可以轻松做到。

您可能会考虑的一个选择是使用构建器模式:创建一个可变类型,使用一种方法将该可变类型的实例转换为不可变类型的实例……当然,它可以具有只读字段。当然,如果您使用的框架要求“最终”类型是它开始构建的类型,那么这可能行不通。

C# 的对象初始化器语法使这非常愉快。例如,在 Noda Time 中你可以这样写:

Period period = new PeriodBuilder { Days = 1, Hours = 22 }.Build();

如果您不能更改类型,那么您需要实现某种 "popsicle immutability" or "write-once immutability" ,这两者都很繁琐且令人恼火。

关于c# - 使类字段在事后只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292987/

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