﻿<?xml version="1.0" encoding="utf-8"?><Type Name="ReviewComRegistrationMethodsRule" FullName="Gendarme.Rules.Interoperability.Com.ReviewComRegistrationMethodsRule"><TypeSignature Language="C#" Value="public class ReviewComRegistrationMethodsRule : Gendarme.Framework.Rule, Gendarme.Framework.ITypeRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ReviewComRegistrationMethodsRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IRule, class Gendarme.Framework.ITypeRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Interoperability.Com</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.Interoperability", "CA1410:ComRegistrationMethodsShouldBeMatched")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.FxCopCompatibility("Microsoft.Interoperability", "CA1411:ComRegistrationMethodsShouldNotBeVisible")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("COM registration methods should be matched (i.e. both or none of them should exist) and should not be externally visible.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Add a missing method or change methods visibility to private or internal.")</AttributeName></Attribute></Attributes><Docs><summary>
            This rule checks the correctness of COM register and unregister methods,
            i.e. they should not be externally visible and they should be matched
            (both or none of them should exist ).
            </summary><remarks>To be added.</remarks><example>
            Bad example (public methods):
            <code>
            [ComVisible (true)
            class Bad {
            	[ComRegisterFunction]
            	public void Register ()
            	{
            	}
            	[ComUnregisterFunction]
            	public void Unregister ()
            	{
            	}
            }
            </code></example><example>
            Bad example (only one of the methods exist)
            <code>
            [ComVisible (true)]
            class Bad {
            	[ComRegisterFunction]
            	public void Register ()
            	{
            	}
            }
            </code></example><example>
            Good example:
            <code>
            [ComVisible (true)]
            class Good {
            	[ComRegisterFunction]
            	private void Register ()
            	{
            	}
            	[ComUnregisterFunction]
            	private void Unregister ()
            	{
            	}
            }
            </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public ReviewComRegistrationMethodsRule ();" /><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>