代码之家  ›  专栏  ›  技术社区  ›  Paulie Waulie

使用反射更改实现

  •  2
  • Paulie Waulie  · 技术社区  · 14 年前

    我的老板认为自己是一个OOP大师,而我认为他是一个程序员爱好者。他负责我们的Sage开发,为我们的客户Sage安装添加定制需求。他最近对反射非常兴奋,他正在代码中反思Sage的程序集,并更改私有成员和事件处理程序。我认为这不是一个好主意,但他拒绝了我说,圣人认为他是惊人的,他可以做到这一点。我认为这是一种糟糕的做法,因为它效率低下,而且如果他们在任何时候更改实现,我们的代码都可能崩溃。我的意思是,通常一个开发者为了某个原因把一些东西私有化了,对吧?

    一般的规则是什么?

    如果这是一个愚蠢的问题,我深表感谢和歉意。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Alex Reitbort    14 年前

    你是对的。如果您依赖于第三方库的实现细节,那么当第三方库被更新时,您最好准备好重写所有内容,并且当您用一些“无辜”的值更改一些私有变量时,您将准备好应对意外的副作用。

        2
  •  2
  •   thecoop    14 年前

    您不应该修改现有的程序集-结果可能是未知的,并且程序集供应商肯定不支持。此外,这样的更改将丢失程序集签名,以保证程序集是供应商提供的版本。

    非常 严格的测试,没有供应商的支持,远离!

        3
  •  1
  •   Community CDub    7 年前

    程序集的每个新版本都可以有完全不同的实现。Sage的软件更新可能会使您老板的代码完全失效,并且需要完全重新开发才能重新建立相同的功能。

    StringBuilder 在.NET3.5中使用了 string 在内部,在.NET4中它使用 char[] recent question .)