【发布时间】:2010-10-24 19:08:47
【问题描述】:
我正在寻找一种允许 C# 对象中的属性仅设置一次的方法。编写代码很容易做到这一点,但如果存在标准机制,我宁愿使用它。
公共 OneShot我想要发生的是,如果尚未设置该属性,则可以设置该属性,但如果之前已设置,则抛出异常。它的功能应该类似于 Nullable 值,我可以在其中检查它是否已设置。
【问题讨论】:
-
这对我来说很臭,对不起。为什么不将值传递给构造函数?另外,您是否要向调用者提供反馈,以便他们在设置值之前进行检查,以确保它没有被设置?
-
理想情况下我会在构造函数中传递它,但我必须在一段时间内构建对象。例如,一条记录提供信息 A,下一条记录提供信息 B 和 C。一旦我有了一套完整的信息,我就可以使用这些信息将所有记录重新链接在一起。我想要一个运行时机制来验证我只设置了一次值,使它们成为伪只读!
-
是的 - 我也闻到了!
-
它闻起来只是因为你认为它闻起来。当我使用的框架调用它实例化的对象并且根本无法注入依赖项时,我需要这个。因此,我让我的组合根将容器推送到该对象上定义的一次性写入静态属性。
-
C# 9.0 引入了记录表达式。 docs.microsoft.com/en-us/dotnet/csharp/language-reference/…