【发布时间】:2013-08-29 01:37:58
【问题描述】:
似乎将此属性用于非公共方法/属性的单元测试以外的任何事情都会产生巨大的代码气味。 InternalsVisibleTo 属性是否有任何合法用途来实现使用标准设计模式可能无法/过于繁琐的事情?
【问题讨论】:
-
这个问题假定替代方案是可以接受的。让一个类public 并不是一个很好的选择,当你做出巨大的改变时会破坏everybody。包括你不认识的程序员的代码。该属性有助于限制你造成的伤害。
-
@HansPassant - 我同意
public一切都不会飞。所以我并没有真正争论在单元测试场景中违反封装的必要性和优点。InternalsVisibleTo为开发人员提供了选择性地违反 C# 封装语义的选项(或者更好的说法是“创建某种混合封装方案”),我只是想知道这是否可以使用通常不赞成其他一些设计模式(如果存在的话)。