bri*_*ner 8 c# protected internal access-levels
如果我有一个类我想要的方法protected和internal.我希望只有程序集中的派生类才能调用它.
由于protected internal手段protected 或者 internal,你必须做出选择.在这种情况下你选择什么 - protected或者internal?
我个人会选择保护.如果您自己的程序集中的子类足以调用该方法,为什么不在另一个程序集中的子类?也许你可以将功能重构为一个单独的(内部)类.
你真的需要客观地思考方法的目的.内部可访问性几乎总是让我觉得不对.主要是因为我尝试从.NET框架中的控件或类派生出来的经验,因为有人决定将类或方法标记为内部.原作者从未注意到无法访问该方法使得实现子类变得更加困难.
编辑
为了澄清,一个类的内部可访问性是非常有用的,我并不暗示内部通常是坏的.我的观点是,在公共课上的内部方法对我来说似乎不对.正确设计的基类不应该对同一程序集中的派生类赋予不公平的优势.
我希望只有程序集中的派生类才能调用它.
那么,你有两个选择.你可以让它受到保护,每当你的一个客户扩展你的课程并调用你的方法并且你发现它时,你可以写一封严厉措辞的信,告诉他们请停止这样做.或者您可以将其设置为内部,并对您的同事代码进行代码审查,以确保他们不使用他们不应该使用的方法.
我的猜测是,后者是更便宜,更容易做的事情.我把它做成内部的.