﻿<?xml version="1.0" encoding="utf-8"?><Type Name="ComVisibleShouldInheritFromComVisibleRule" FullName="Gendarme.Rules.Interoperability.Com.ComVisibleShouldInheritFromComVisibleRule"><TypeSignature Language="C#" Value="public class ComVisibleShouldInheritFromComVisibleRule : Gendarme.Framework.Rule, Gendarme.Framework.ITypeRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ComVisibleShouldInheritFromComVisibleRule 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", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("COM visible class is derived from COM invisible class")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Make derived type invisible from COM or make base type visible")</AttributeName></Attribute></Attributes><Docs><summary>
             This rule checks that the base type of COM visible types is also 
             visible from COM. This is needed reduce the chance of breaking 
             COM clients as COM invisible types do not have to follow COM versioning rules.
             </summary><remarks>To be added.</remarks><example>
             Bad example:
             <code>
             [assemply: ComVisible(false)]
             namespace InteropLibrary {
            	[ComVisible (false)]
            	public class Base {
            	}
            	
            	[ComVisible (true)]
            	public class Derived : Base {
            	}
             }
             </code></example><example>
             Good example:
             <code>
             [assemply: ComVisible(false)]
             namespace InteropLibrary {
            	[ComVisible (true)]
            	public class Base {
            	}
            	
            	[ComVisible (true)]
            	public class Derived : Base {
            	}
             }
             </code></example><example>
             Good example (both types are invisible because of the assembly attribute):
             <code>
             [assemply: ComVisible(false)]
             namespace InteropLibrary {
            	public class Base {
            	}
            	
            	public class Derived : Base {
            	}
             }
             </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public ComVisibleShouldInheritFromComVisibleRule ();" /><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>