﻿<?xml version="1.0" encoding="utf-8"?><Type Name="DeclareEventHandlersCorrectlyRule" FullName="Gendarme.Rules.Design.DeclareEventHandlersCorrectlyRule"><TypeSignature Language="C#" Value="public class DeclareEventHandlersCorrectlyRule : Gendarme.Framework.Rule, Gendarme.Framework.ITypeRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DeclareEventHandlersCorrectlyRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IRule, class Gendarme.Framework.ITypeRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Design</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>Gendarme.Framework.Rule</BaseTypeName></Base><Interfaces><Interface><InterfaceName>Gendarme.Framework.ITypeRule</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>Gendarme.Framework.FxCopCompatibility("Microsoft.Design", "CA1009:DeclareEventHandlersCorrectly")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("The event has an incorrect signature.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("You should correct the return type, parameter types, or parameter names.")</AttributeName></Attribute></Attributes><Docs><summary>
            This rule will fire if an event is declared with a signature which does not match
            the .NET guidelines. The return type of the event should be void (because there
            is no good way to handle return values if multiple delegates are attached to the
            event). And the event should take two arguments. The first should be of type
            <c>System.Object</c> and be named 'sender'. The second should be of type
            <c>System.EventArgs</c> (or a subclass) and named 'e'. This helps tools
            such as visual designers identify the delegates and methods which may be
            attached to events. Note that .NET 2.0 added a generic <c>System.EventHandler</c>
            type which can be used to easily create events with the correct signature.
            </summary><remarks>This rule is available since Gendarme 2.2</remarks><example>
            Bad example:
            <code>
            // the second parameter (which should be System.EventArgs or a derived class) is missing
            delegate void MyDelegate (int sender);
            class Bad {
            	public event MyDelegate CustomEvent;
            }
            </code></example><example>
            Good example (delegate):
            <code>
            delegate void MyDelegate (int sender, EventArgs e);
            class Good {
            	public event MyDelegate CustomEvent;
            }
            </code></example><example>
            Good example (generics):
            <code>
            class Good {
            	public event EventHandler&lt;EventArgs&gt; CustomEvent;
            }
            </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public DeclareEventHandlersCorrectlyRule ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="CheckType"><MemberSignature Language="C#" Value="public Gendarme.Framework.RuleResult CheckType (Mono.Cecil.TypeDefinition type);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance valuetype Gendarme.Framework.RuleResult CheckType(class Mono.Cecil.TypeDefinition type) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.RuleResult</ReturnType></ReturnValue><Parameters><Parameter Name="type" Type="Mono.Cecil.TypeDefinition" /></Parameters><Docs><param name="type">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="TearDown"><MemberSignature Language="C#" Value="public override void TearDown ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void TearDown() cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member></Members></Type>