【发布时间】:2014-08-07 02:07:29
【问题描述】:
当我正在为System.Console 类编写适配器时,这让我印象深刻。为什么In、Out 和Error 属性与SetIn、SetOut 和SetError 方法配对?为什么不使用属性的设置器呢?这是一个架构决策还是存在阻止 .NET 框架开发人员这样做的限制?
【问题讨论】:
-
属性设置器不应该有太多的副作用。
-
虽然我同意你的一般情况,但这仍然是一个非常自以为是的论点。我的意思是,我不认为将 TextReader 交换为“太多副作用”。这正是我对设置这些值之一的期望。此外,如果它真的有太多的副作用,为什么首先要通过 SetIn() 来暴露它?
-
好问题。我的猜测与每个安全性
Attributes的不同有关。我想知道早期版本是否对属性范围有限制,这迫使设计人员使用 set 方法。或者另一个想法是,他们明确希望引起人们对所需安全权限的关注。 -
猜的不错,但是反编译代码后,我们可以看到它们使用了相同的属性。所以这也不是:-/
-
这只是我的猜测,所以我不想回答,以防我错了。不过谢谢:)
标签: c# .net properties architecture