我有一个带有一些抽象方法的类,但我希望能够在设计器中编辑该类的子类。然而,设计者不能编辑子类,除非它可以创建父类的实例。所以我的计划是用存根替换抽象方法并将它们标记为虚拟 - 但如果我创建另一个子类,如果我忘记实现它们,我不会得到编译时错误。
有没有办法标记方法,以便它们必须由子类实现,而不将它们标记为抽象?
好吧,你可以做一些非常混乱的代码,涉及#if
- 即在DEBUG
它是虚拟的(对于设计师而言),但在RELEASE
它是抽象的。不过,维护起来确实很痛苦。
但除此之外:基本上,没有。如果你想要设计者的支持,它不能是抽象的,所以你只剩下“虚拟”(大概是基本方法抛出一个NotImplementedException
).
当然,您的单元测试将检查这些方法是否已实现,是吗? ;-p
实际上,通过泛型进行测试可能非常容易 - 即具有以下形式的通用测试方法:
[Test]
public void TestFoo() {
ActualTest<Foo>();
}
[Test]
public void TestBar() {
ActualTest<Bar>();
}
static void ActualTest<T>() where T : SomeBaseClass, new() {
T obj = new T();
Assert.blah something involving obj
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)