为什么System.Console暴露了SetIn方法?

时间:2014-08-07 02:07:29

标签: c# .net properties architecture

当我为System.Console类编写适配器时,这有点令我印象深刻。为什么InOutError属性与SetInSetOutSetError方法配对?为什么不使用该物业的二传手呢?这是一个架构决策还是存在阻止.NET框架开发人员这样做的限制?

1 个答案:

答案 0 :(得分:1)

我不能代表原作者,但至少有五个充分理由将set方法与属性getter(可能还有受保护的setter)结合使用:

  1. 设置值时需要其他参数(输入或输出)。
  2. 您需要多次设置重载。也许通过字符串以及特定类型设置一些特定类型的属性是很常见的。
  3. 您需要使用不同的属性或权限进行设置与获取。
  4. 您具有更新属性与设置值的不同功能。例如,考虑一个客户端代理类,除了允许用户设置需要传播到服务器的值之外,还必须从服务器数据更新值。
  5. 也许你想分离你的接口以获得协方差,这样你就需要在不同的接口上使用你的getter和setter。
  6. 说了这么多,我在dotPeek中查看了所述方法的代码(SetInget_In)。我找不到任何不使用二传手的借口。 In getter与SetIn方法具有相同的权限属性。