﻿<?xml version="1.0" encoding="utf-8"?><Type Name="UseObjectDisposedExceptionRule" FullName="Gendarme.Rules.Exceptions.UseObjectDisposedExceptionRule"><TypeSignature Language="C#" Value="public sealed class UseObjectDisposedExceptionRule : Gendarme.Framework.Rule, Gendarme.Framework.IMethodRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit UseObjectDisposedExceptionRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IMethodRule, class Gendarme.Framework.IRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Exceptions</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("A method of an IDisposable type does not throw System.ObjectDisposedException.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Throw ObjectDisposedException if the object has been disposed.")</AttributeName></Attribute></Attributes><Docs><summary>
             It's usually a very bad idea to attempt to use an object after it has been
             disposed. Doing so may lead to crashes in native code or any number of
             other problems. In order to prevent this, and to report the problem in
             a clear way, classes should throw System.ObjectDisposedException from
             public methods if the object has been disposed.
            
             Note that there are some methods which should not throw ObjectDisposedException. 
             This includes constructors, finalizers, Equals, GetHashCode, ToString, and Dispose.
             </summary><remarks>This rule is available since Gendarme 2.6</remarks><example>
             Bad example:
             <code>
             internal sealed class WriteStuff : IDisposable
             {
             	public WriteStuff (TextWriter writer)
             	{
             		this.writer = writer;
             	}
             	
             	// Objects are generally not in a useable state after being disposed so
             	// their public methods should throw ObjectDisposedException.
             	public void Write (string message)
             	{
             		writer.Write (message);
             	}
             	
             	public void Dispose ()
             	{
             		if (!disposed) {
             			writer.Dispose ();
             			disposed = true;
             		}
             	}
             	
             	private bool disposed;
             	private TextWriter writer;
             }
             </code></example><example>
             Good example:
             <code>
             internal sealed class WriteStuff : IDisposable
             {
             	public WriteStuff (TextWriter writer)
             	{
             		this.writer = writer;
             	}
             	
             	// In general all public methods should throw ObjectDisposedException
             	// if Dispose has been called.
             	public void Write (string message)
             	{
             		if (disposed) {
             			throw new ObjectDisposedException (GetType ().Name);
             		}
             		
             		writer.Write (message);
             	}
             	
             	public void Dispose ()
             	{
             		if (!disposed) {
             			writer.Dispose ();
             			disposed = true;
             		}
             	}
             	
             	private bool disposed;
             	private TextWriter writer;
             }
             </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public UseObjectDisposedExceptionRule ();" /><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></Members></Type>