【 Download 】
以下のリンクをクリックするとDownloadページへ移動するので、移動先からダウンロードしてください。
DisposableClass.zip
【 インストール方法 】
Visual Studio ユーザー項目テンプレートフォルダ ( 通常は "マイ ドキュメント\Visual Studio 2005\Templates\ItemTemplates" ) の "Visual C#" フォルダに、ダウンロードしたファイル ( DisposableClass.zip ) を配置するだけです。
Visual Studio ユーザー項目テンプレートフォルダは、Visual Studio 2005 の [ ツール ] - [ オプション ] - [ プロジェクトおよびソリューション ] - [ 全般 ] - [ Visual Studio ユーザー項目テンプレートの場所 ] で設定されている場所です。
【 使用方法 】
DisposableClass.zipをインストールすると、C#のプロジェクトに「新しい項目の追加」を行う際に "Disposable クラス" というテンプレートが選択できるようになります。
新しい項目の追加は、以下の方法で行えます。
- [ プロジェクト ] - [ 新しい項目の追加 ] を選択する
- プロジェクトのコンテキストメニューで [ 追加 ] - [ 新しい項目の追加 ] を選択する
- Ctrl + Shift + A を押す
【 使用例 】
ConsoleApplication1プロジェクト ( デフォルトの名前空間もConsoleApplication1 ) で、このテンプレートを使ってDisposableClass1.csを作成した場合、以下のようなコードファイルが作成されます。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class DisposableClass1 : IDisposable
{
public DisposableClass1()
{
this.InitializeDisposeFinalizePattern();
}
public void Method1()
{
this.ThrowExceptionIfDisposed();
// Method1 の処理をこの位置に記述します。
}
#region Dispose Finalize パターン
/// <summary>
/// 既にDisposeメソッドが呼び出されているかどうかを表します。
/// </summary>
private bool disposed;
/// <summary>
/// ConsoleApplication1.DisposableClass1 によって使用されているすべてのリソースを解放します。
/// </summary>
public void Dispose()
{
GC.SuppressFinalize(this);
this.Dispose(true);
}
/// <summary>
/// ConsoleApplication1.DisposableClass1 クラスのインスタンスがGCに回収される時に呼び出されます。
/// </summary>
~DisposableClass1()
{
this.Dispose(false);
}
/// <summary>
/// ConsoleApplication1.DisposableClass1 によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。
/// </summary>
/// <param name="disposing">マネージ リソースとアンマネージ リソースの両方を解放する場合は true。アンマネージ リソースだけを解放する場合は false。 </param>
protected virtual void Dispose(bool disposing)
{
if (this.disposed)
{
return;
}
this.disposed = true;
if (disposing)
{
// マネージ リソースの解放処理をこの位置に記述します。
}
// アンマネージ リソースの解放処理をこの位置に記述します。
}
/// <summary>
/// 既にDisposeメソッドが呼び出されている場合、例外をスローします。
/// </summary>
/// <exception cref="System.ObjectDisposedException">既にDisposeメソッドが呼び出されています。</exception>
protected void ThrowExceptionIfDisposed()
{
if (this.disposed)
{
throw new ObjectDisposedException(this.GetType().FullName);
}
}
/// <summary>
/// Dispose Finalize パターンに必要な初期化処理を行います。
/// </summary>
private void InitializeDisposeFinalizePattern()
{
this.disposed = false;
}
#endregion
}
}
【 参考 】
独自の項目テンプレートを作成するには?[VS 2005のみ] - @IT
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/79-e1ba548f