base class 的虚方法隐藏发生时如何强制编译错误?
How to force a compile error when virtual method hiding of base class occurs?
我在基础 class 中有一个虚方法,它有一个完整的实现。派生自此 class 的开发人员可能会错误地创建一个具有相同名称的方法,而不会覆盖基础 class(不知道有一个合适的基础 class 方法可以使用)。编译器发出警告,指出新方法隐藏了基方法。
问题是编译器警告很容易被忽略或不被注意到。有没有办法给出编译器错误......或者某种形式的警告?如果开发人员想使用他们自己的实现而不只是创建一个具有相同名称的实现,我希望他们有意识地重写基本方法。我不能强迫其他开发人员的 Visual Studio 将警告设置为错误。此外,已经存在没有人会修复的警告。
附带问题:如果当前的 VS2013 和 C#5 无法解决此问题,VS 2015 或 C#6 是否会添加任何有助于解决此问题的内容?
您可以更改项目属性以将特定警告视为错误。
Go to Project Properties -> Build
检查特定警告:在“将警告视为错误”下并指定:0114 作为警告编号。
现在这个特定的警告将显示为错误。这可能会有帮助,但主要取决于开发人员,如果他们首先选择忽略警告,那么他们也可以 意外地 从构建属性中删除此警告编号。
针对您的问题:
does VS 2015 or C#6 add anything which helps in this issue?
您将在 Visual Studio 2015 年获得相同的 behaviour/warning,适用于 C# 6.0。它与以前的版本相同。
我在基础 class 中有一个虚方法,它有一个完整的实现。派生自此 class 的开发人员可能会错误地创建一个具有相同名称的方法,而不会覆盖基础 class(不知道有一个合适的基础 class 方法可以使用)。编译器发出警告,指出新方法隐藏了基方法。
问题是编译器警告很容易被忽略或不被注意到。有没有办法给出编译器错误......或者某种形式的警告?如果开发人员想使用他们自己的实现而不只是创建一个具有相同名称的实现,我希望他们有意识地重写基本方法。我不能强迫其他开发人员的 Visual Studio 将警告设置为错误。此外,已经存在没有人会修复的警告。
附带问题:如果当前的 VS2013 和 C#5 无法解决此问题,VS 2015 或 C#6 是否会添加任何有助于解决此问题的内容?
您可以更改项目属性以将特定警告视为错误。
Go to Project Properties -> Build
检查特定警告:在“将警告视为错误”下并指定:0114 作为警告编号。
现在这个特定的警告将显示为错误。这可能会有帮助,但主要取决于开发人员,如果他们首先选择忽略警告,那么他们也可以 意外地 从构建属性中删除此警告编号。
针对您的问题:
does VS 2015 or C#6 add anything which helps in this issue?
您将在 Visual Studio 2015 年获得相同的 behaviour/warning,适用于 C# 6.0。它与以前的版本相同。