更新:当代码分析选项"禁止生成代码的结果(仅限管理)"关闭,并且规则集设置为"Microsoft基本设计指南规则"时,会发生这种情况.
在2013-04-26,Microsoft确认这是一个错误,但不会在此版本或下一版本的Visual Studio中修复它.
我们经常使用空委托初始化事件处理程序,以避免检查空值.例如:
public EventHandler SomeEvent = delegate {};
Run Code Online (Sandbox Code Playgroud)
但是,自从开始在Visual Studio 2012(RTM)中编译我们的一些代码以来,我注意到派生类中的很多事件现在都在触发CA1601:不要在Visual Studio 2012的代码分析中隐藏基类方法警告.
这是一个会触发警告的示例:
using System;
using System.ComponentModel;
[assembly: CLSCompliant( true )]
namespace TestLibrary1
{
public abstract class Class1
{
public event PropertyChangedEventHandler PropertyChanged = delegate {};
}
public class Class2 : Class1
{
// this will cause a CA1061 warning
public event EventHandler SelectionCancelled = delegate { };
}
public class Class3 : Class1
{
// this will not cause …Run Code Online (Sandbox Code Playgroud)