在基类对象中,我有一个可覆盖的子例程,我希望所有派生对象都能够包含它。但是,他们没有拥有,如果他们没有必要使用它,我不希望他们被迫声明它。为了强制执行此操作,我将默认行为保留为空。例如,这是我的整个子目录:
Protected Overridable Sub MySubroutine(ByVal someObject As Object)
End Sub
这是不好的做法吗?我不想将其声明为MustOverride
,但我不想要默认行为。是否有“更好”的方式来做到这一点,还是完全可以接受?我不想成为那个黑客程序员...只是想学习:)
答案 0 :(得分:1)
是的,这是完全可以接受的。 MustOverride
成员通常可能对继承类的要求过于严格,因此如果您想要一个没有默认实现的虚拟成员,这是正确的事情。
任何继承自此类的人都会理解您已将虚拟成员定义为类的“钩子”。此外,您已将此方法声明为Protected
这一事实也是一个好主意,因为从维护角度来看,公共虚拟成员可能会出现问题。
答案 1 :(得分:0)
作为学习过程的一个步骤,您应该下载.Net Reflector(from redgate)。
使用它会告诉你很多其他人如何开发代码,以及Microsoft如何开发框架代码。你会从中学到很多东西。