在接口中声明事件时的代码分析警告

时间:2014-05-05 19:22:00

标签: c# visual-studio-2013 code-analysis

为什么以下界面中的事件声明在代码分析器中抱怨CA1009?在实现中,它确实似乎遵循事件声明的标准约定。

using System;

namespace Client.Wpf.Utilities.MessageSubscription
{
    public interface ITrigger<TMessageType>
    {
        event EventHandler<TMessageType> Fire;
    }
}

CA1009正确声明事件处理程序

声明&#39; EventHandler&#39;的第二个参数作为EventArgs,或者是扩展EventArgs的类型的实例,名为&#39; e&#39;。

ITrigger.cs 7

实施:

using System;
//using GalaSoft.MvvmLight.Messaging;

namespace Client.Wpf.Utilities.MessageSubscription
{
    public class MvvmMessageTrigger<TMessageType> : ITrigger<TMessageType>
    {
        public MvvmMessageTrigger()
        {
            //Messenger.Default.Register<TMessageType>(this, InvokeSubscribers);
        }

        public event EventHandler<TMessageType> Fire;

        private void InvokeSubscribers(TMessageType messageType)
        {
            if (null != Fire)
            {
                Fire(this, messageType);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

错误非常明显:

声明&#39; EventHandler&#39;的第二个参数作为EventArgs,或者是扩展EventArgs的类型的实例,名为&#39; e&#39;。

在上面的示例中,TMessageType没有从EventArgs继承,因而也没有继承警告。