c# - CS0672 : Member `Foo.OnSelected()' overrides obsolete member `Baz.OnSelected()'

标签 c# .net visual-studio-2008 compiler-construction compiler-errors

在我的DLL中,我已使用System.ObsoleteAttribute将虚拟方法标记为已过时,但这不会产生我所期望的警告。

DLL源(Baz):

[Obsolete("This method has become obsolete, please override `OnEnable` instead.")]
public virtual void OnSelected() {
}

public virtual void OnEnable() {
}

用户来源(Foo):
// CS0672 - Doesn't show useful message...
public override void OnSelected() {
}

构建项目时会记录以下警告:

CS0672: Member Foo.OnSelected() overrides obsolete member Baz.OnSelected().
Add the Obsolete attribute to `Foo.OnSelected()'



但我希望我的自定义过时消息在此警告中占主导地位,以便我的客户可以按照提供的说明进行操作。有没有办法做到这一点?

最佳答案

您可以在属性构造函数中添加第二个参数,以告诉编译器抛出编译错误(而不是通常的“方法已过时”警告),并且该错误将使用属性的消息。 仅在调用方法时才会发生错误。

[Obsolete("This method has become obsolete, please override `OnEnable` instead.", true)]
public virtual void OnSelected() {
}

请注意,这不会删除CS0672警告。

关于c# - CS0672 : Member `Foo.OnSelected()' overrides obsolete member `Baz.OnSelected()' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244054/

相关文章:

c++ - 使用 Opencl 在 CPU 和 GPU 上运行 opencv 例程

c# - 如何从 C#.net 通过 DeviceIoControl 使用 IOCTL_SCSI_MINIPORT?

c# - 将窗体控件绑定(bind)到对象的属性

.net - Win7任务栏上的应用程序图标有进度条吗?

c# - 图像 TapGestureRecognizer 未在 Xamarin 中触发

c++ - VC++ libcurl .lib 大小

c# - 在 C# (winform .net) 中使用 .c 文件

c# - 有没有办法为每个对象编写自定义 JsonConverter

c# - 如何构建 C# WinForms Model-View-Presenter(被动 View )程序?

c++ - Visual Studio 2008 x64 下的 libpqxx