Disposableクラスコードスニペット
コード スニペット テクノロジを精査するに出てくる dispclassコードスニペット をMSDNのDispose メソッドの実装に合わせてちょっと直したもの。
ショートカットは「dispclass」。以下の部分を「dispclass.snippet」の名前で My Documents 下の「Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets」フォルダに置けばOK。
<?xml version="1.0" encoding="utf-8" ?> <CodeSnippet Format="1.0.0"> <Header> <Title>disposable class</Title> <Shortcut>dispclass</Shortcut> <Description>disposable class</Description> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>classname</ID> <ToolTip>Class name</ToolTip> <Default>MyResourceWrapper</Default> </Literal> </Declarations> <Code Language="csharp" Format="CData"> <![CDATA[public class $classname$ : IDisposable { private bool disposed; $end$ public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if(!this.disposed) { if(disposing) { // 別の状態を解放します (マネージ オブジェクト)。 } // 独自の状態を解放します (アンマネージ オブジェクト)。 // 大きなフィールドを NULL に設定します。 } this.disposed = true; } ~$classname$() { Dispose(false); } }]]> </Code> </Snippet> </CodeSnippet>
Disposeは必ずこれでいいとは限らないけど、このパターンが基本なのでスニペットに用意しとくと便利。コメントはまま引用だけど、なんか微妙だ…。