小编Sea*_*ean的帖子

为什么空委托事件处理程序会导致CA1061警告?

更新:当代码分析选项"禁止生成代码的结果(仅限管理)"关闭,并且规则集设置为"Microsoft基本设计指南规则"时,会发生这种情况.

在2013-04-26,Microsoft确认这是一个错误,但不会在此版本或下一版本的Visual Studio中修复它.

链接到MS Connect项目

我们经常使用空委托初始化事件处理程序,以避免检查空值.例如:

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)

c# code-analysis .net-4.5 visual-studio-2012

17
推荐指数
1
解决办法
963
查看次数

标签 统计

.net-4.5 ×1

c# ×1

code-analysis ×1

visual-studio-2012 ×1