﻿<?xml version="1.0" encoding="utf-8"?><Type Name="ProvideAlternativeNamesForOperatorOverloadsRule" FullName="Gendarme.Rules.Design.ProvideAlternativeNamesForOperatorOverloadsRule"><TypeSignature Language="C#" Value="public class ProvideAlternativeNamesForOperatorOverloadsRule : Gendarme.Framework.Rule, Gendarme.Framework.ITypeRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ProvideAlternativeNamesForOperatorOverloadsRule 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.Usage", "CA2225:OperatorOverloadsHaveNamedAlternates")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("This type contains overloaded operators but doesn't provide named alternatives.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Add named methods equivalent to the operators for language that do not support them (e.g. VB.NET).")</AttributeName></Attribute></Attributes><Docs><summary>
             The rule ensure that all overloaded operators are also accessible using named 
             alternatives because some languages, like VB.NET, cannot use overloaded operators. 
             For those languages named methods should be implemented that provide the same
             functionality. This rule verifies that a named alternative exists for each overloaded operator.
             <list type="bullet"><item><term>op_UnaryPlus</term><description>Plus</description></item><item><term>op_UnaryNegation</term><description>Negate</description></item><item><term>op_LogicalNot</term><description>LogicalNot</description></item><item><term>op_OnesComplement</term><description>OnesComplement</description></item></list><list type="bullet"><item><term>op_Increment</term><description>Increment</description></item><item><term>op_Decrement</term><description>Decrement</description></item><item><term>op_True</term><description>IsTrue</description></item><item><term>op_False</term><description>IsFalse</description></item></list><list type="bullet"><item><term>op_Addition</term><description>Add</description></item><item><term>op_Subtraction</term><description>Subtract</description></item><item><term>op_Multiply</term><description>Multiply</description></item><item><term>op_Division</term><description>Divide</description></item><item><term>op_Modulus</term><description>Modulus</description></item></list><list type="bullet"><item><term>op_BitwiseAnd</term><description>BitwiseAnd</description></item><item><term>op_BitwiseOr</term><description>BitwiseOr</description></item><item><term>op_ExclusiveOr</term><description>ExclusiveOr</description></item></list><list type="bullet"><item><term>op_LeftShift</term><description>LeftShift</description></item><item><term>op_RightShift</term><description>RightShift</description></item></list><list type="bullet"><item><term>op_Equality</term><description>Equals</description></item><item><term>op_Inequality</term><description>(not) Equals</description></item><item><term>op_GreaterThan</term><description>Compare</description></item><item><term>op_LessThan</term><description>Compare</description></item><item><term>op_GreaterThanOrEqual</term><description>Compare</description></item><item><term>op_LessThanOrEqual</term><description>Compare</description></item></list></summary><remarks>To be added.</remarks><example>
             Bad example:
             <code>
             class DoesNotImplementAlternative {
            	public static int operator + (DoesNotOverloadOperatorEquals a, DoesNotOverloadOperatorEquals b)
            	{
            		return 0;
            	}
             }
             </code></example><example>
             Good example:
             <code>
             class DoesImplementAdd {
            	public static int operator + (DoesImplementAdd a, DoesImplementAdd b)
            	{
            		return 0;
            	}
            	
            	public int Add (DoesImplementAdd a)
            	{
            		return this + a;
            	}
            }
             </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public ProvideAlternativeNamesForOperatorOverloadsRule ();" /><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></Members></Type>