﻿<?xml version="1.0" encoding="utf-8"?><Type Name="UseNoInliningWithGetCallingAssemblyRule" FullName="Gendarme.Rules.Correctness.UseNoInliningWithGetCallingAssemblyRule"><TypeSignature Language="C#" Value="public class UseNoInliningWithGetCallingAssemblyRule : Gendarme.Framework.Rule, Gendarme.Framework.IMethodRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseNoInliningWithGetCallingAssemblyRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IMethodRule, class Gendarme.Framework.IRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Correctness</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>Gendarme.Framework.Rule</BaseTypeName></Base><Interfaces><Interface><InterfaceName>Gendarme.Framework.IMethodRule</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>Gendarme.Framework.EngineDependency(typeof(Gendarme.Framework.Engines.OpCodeEngine))</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("Assembly.GetCallingAssembly() is called from a method that could be inlined by the JIT")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Decorate method with [MethodImpl(MethodImplOptions.NoInlining)] to ensure it will never be inlined.")</AttributeName></Attribute></Attributes><Docs><summary>
             This rule warns when a method call <c>Assembly.GetCallingAssembly()</c> from a 
             method that is not decorated with <c>[MethodImpl(MethodImplOptions.NoInlining)]</c>.
             Without this attribute the method could be inlined by the JIT. In this case the
             calling assembly would be the assembly of the caller (of the inlined method), 
             which could be different than the assembly of the real, source-wise, caller to
             <c>Assembly.GetCallingAssembly</c>.
             </summary><remarks>This rule is available since Gendarme 2.8</remarks><example>
             Bad example:
             <code>
             public void ShowInfo ()
             {
            	Console.WriteLine (Assembly.GetCallingAssembly ().Location);
             }
             </code></example><example>
             Good example:
             <code>
             [MethodImpl (MethodImplOptions.NoInlining)]
             public void ShowInfo ()
             {
            	Console.WriteLine (Assembly.GetCallingAssembly ().Location);
             }
             </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public UseNoInliningWithGetCallingAssemblyRule ();" /><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="CheckMethod"><MemberSignature Language="C#" Value="public Gendarme.Framework.RuleResult CheckMethod (Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance valuetype Gendarme.Framework.RuleResult CheckMethod(class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.RuleResult</ReturnType></ReturnValue><Parameters><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="method">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="Initialize"><MemberSignature Language="C#" Value="public override void Initialize (Gendarme.Framework.IRunner runner);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Initialize(class Gendarme.Framework.IRunner runner) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="runner" Type="Gendarme.Framework.IRunner" /></Parameters><Docs><param name="runner">To be added.</param><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member></Members></Type>