- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个框架中工作,该框架强制我使用默认构造函数创建一个类的实例,因此不幸的是我不能使用“只读”并将参数传递给该字段。
在创建实例后,我打算立即通过公共(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/
我正在尝试查找过去存在冲突的项目的 merge 修订。有没有比手动复制 merge 更简单的方法呢?因为我一直没能找到让 git show 只列出有冲突的文件(如果有的话)的方法。 最佳答案 一般情况
我正在用 PHP 构建一个 Web 应用程序,我已经决定(在整个过程中)以不同的语言提供它。 我的问题是: 我不想遍历模板文件中的所有 HTMl 代码来寻找我需要用动态生成的 lang 变量替换的“单
我认为我非常熟悉如何使用 .gitignore(它仍然对我排除顶级目录非常有用),但我现在发现多个 R.java 正在跟踪我的应用程序中使用的各种库中的文件,我想停止跟踪它们。 我尝试将 R.java
我从另一个开发人员那里获得了一个数据库。他没有在任何表上使用 auto_incrementers。它们都有主键 ID,但他在代码中手动完成了所有递增操作。 我现在可以把它们变成 Auto_increm
我是一名优秀的程序员,十分优秀!