2014-05-05 83 views
0

爲什麼在代碼分析器中使用CA1009在以下接口中發生事件聲明?在實施中,它確實似乎遵循事件聲明的標準慣例。在接口中聲明事件時的代碼分析警告

using System; 

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

CA1009聲明的事件處理程序正確

聲明「事件處理程序」的第二個參數作爲一個EventArgs,或延伸的EventArgs一個類型,命名爲「E」的一個實例。

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); 
      } 
     } 
    } 
} 
+0

什麼是TMessageType的聲明? – user957902

+0

在這兩個地方,它只是一個普通的老班,沒什麼特別的。 public class Whatever {public string SomeProperty {get;組; }} –

+0

因此它不是從EventArgs派生的,就像所有的.NET事件數據參數一樣?這是什麼信息抱怨。如果你願意,你可以忽略它,它只是混淆了任何程序員將爲事件編寫事件處理程序。 –

回答

1

誤差是相當不言自明:

聲明 '事件處理程序' 的第二個參數作爲一個EventArgs,或的一個實例一個擴展名爲'e'的EventArgs的類型。

在我上面的示例中,TMessageType不是從EventArgs繼承的,因此也是警告。

相關問題