我正在写一个C#网络库(主要是作为一个学习锻炼,如果有人实际上最终使用它,因为我”这不是对我来说太重要当然,解决方案已经在那里了)。设计咨询 - 当使用“虚拟”和“密封”有效
我对自己的结构非常愉快,到目前为止,我还提供客户机/服务器,可以在原始字节通过套接字,或者稍微复杂一点,通过序列化消息对象沟通的几层。
我遇到的问题是什么时候我应该声明方法,属性或事件sealed
,virtual
或没有限定符。
我知道所有的这些事情 - sealed
防止一类的继承,或方法的进一步覆盖。 virtual
将允许通过方法重写的多态行为。
由于我在设计一个类库,但是,我不确定当使用这些。这是一个可扩展性的问题,我认为......我提供了一些接口,一个或两个抽象类,以及我的库的消费者使用或扩展的一些具体实现,但是我很难决定何时它是一个“好主意”明确禁止派生类或允许覆盖功能。
在设计我的课程供其他人使用时,请牢记一切指示或建议吗?
This question和this one有点帮助,因为是this one,但由于我正在编写一个可分发的库,我试图涵盖所有的基础。
(回复评论说,删除了!) @(节录) - 不正确的;您可以将'override'标记为'sealed'以防止进一步覆盖。 – 2010-01-07 20:28:43