我正在使用Unity,其中有一些非常常见的方法,例如Start()
和Update()
。每当我从另一个类继承时,我都会覆盖父方法,但我总是忘记拨打base.ParentMethod();
。
我是否有办法阻止自己这样做?它会导致很多错误,我浪费了很多时间来搜索。 Visual Studio中是否有一个设置,当我覆盖某些内容时会自动调用基本方法?我可以做一些检查,看看哪些方法我忘记进行基本调用?
理想情况下,当我忘记进行基本调用时,我想强制Visual Studio向我发出警告。我可以这样做,还是类似的东西?
答案 0 :(得分:3)
此问题的常见方法是使用Template Method pattern。在基类中,使方法密封,并调用另一个抽象或虚方法:
public sealed TheMethod()
{
// Do something that should always be done
DoSomethingImportant()
// Call the derived class implementation
TheMethodCore();
}
protected abstract void TheMethodCore();
这样,派生类就无法忘记"调用基本方法;始终会调用DoSomethingImportant
。
答案 1 :(得分:1)
一旦您使用下面的继承定义了类,就不必手动覆盖基本方法;键入override
并点击spacebar
,这将显示所有可以覆盖的方法,一旦您选择了一个基类成员,它将自动生成方法存根以及行base.method();
in被覆盖的方法体。
public class myclass : parentclass
{
}
**如果没有错,这个技巧甚至可以在Visual Studio 2010
答案 2 :(得分:0)
如果您只是从InteliSense编写覆盖和选择方法,则由Visual Studio完成。但是,自从Roslyn你也可以创建(或找到一些)分析器来检查它并在编译后抑制一些警告/信息(我不确定它是否适用于Unity tho)。