【发布时间】:2016-09-07 15:51:27
【问题描述】:
团队正在详细讨论我们希望如何处理一个相当大的Account 对象。
我们不希望必须初始化构造函数中的每个属性,因为这会带来太多开销,因为该属性可能永远不会在该网页上使用。所以我们想出了以下内容。
public partial class Account
{
private bool? projEcho;
public bool ProjectEcho
{
get
{
if (!projEcho.HasValue)
{
projEcho = isProjectEcho();
return (bool)projEcho;
}
else
{
return (bool)projEcho;
}
}
}
}
这样,如果有人正在使用 Account 对象,并且需要访问该属性,则内部会发生 setter。我们不是这种铸造技术的忠实拥护者,但它是确保在代码运行时我们拥有真/假值的唯一方法。看起来这种方法有问题,但它似乎是仅在需要时才填充属性的最有效方法。
我的问题是:“从开发标准的角度来看,是否有更好的替代方案来实现我们正在努力实现的目标?”
【问题讨论】:
-
你考虑过代理设计模式吗??
-
选项列表/代码风格问题通常与 SO 无关。旁注:“初始化......开销太大” - 意味着它不应该是财产......否则这是非常标准的惰性评估 - 不太确定你不喜欢那里。
-
@brykneval 很有趣。我们还没有。虽然通过继承似乎有很多开销,但我们基本上是用这个来做的,但是用一个属性。
标签: c#