如何动态设置静态只读字段?

时间:2014-09-06 21:02:57

标签: c# dynamic static readonly

在设计2D BSP树的节点类时遇到了“问题”。下面列出了我想要完成的事情。

  1. 我希望所有节点的某些字段具有相同的值。
  2. 我希望这些字段是只读的,因为一旦创建了树中的第一个节点,任何字段的值都会变得很糟糕/没有意义。
  3. 我希望能够在构建树之前设置这些值。
  4. 第1点的解决方案是使字段保持静态。创建字段static readonly(点1 + 2)意味着必须直接或在静态构造函数中设置值。使用某个配置文件/ class / what在一个选项中设置静态构造函数中的值。是“正确的”/唯一的方式吗?

    编辑删除有关具有不同节点值的多个树的文本,因为它使得静态字段的重点无用。

1 个答案:

答案 0 :(得分:2)

将字段标记为静态不是您方案中的最佳选项,因为您明确指出并非所有节点都为此特定字段共享相同的值(相反,该值取决于它们所关联的树)。

节点是否有对树本身的引用?然后,您可以提供类似于:

的属性
public int MyProperty
{
   get
   {
       return this._tree.CommonValue;
   }
}