2007年07月26日

Dispose(bool disposing) の override

  
http://msdn2.microsoft.com/en-us/library/fs2xkftw.aspx
のコードをみて、以下のように書いたら、base.Dispose() が呼ばれない可能性があるということで、FxCopの警告が出た。

   protected override void Dispose(bool disposing) {
if(!this.disposed) {
try {
if(disposing) {
addedManaged.Dispose();
}
this.disposed = true;
} finally {
base.Dispose(disposing);
}
}
}


なので、以下のように書き換えた。

   protected override void Dispose(bool disposing) {
try {
if(!this.disposed) {
if(disposing) {
addedManaged.Dispose();
}
this.disposed = true;
}
} finally {
base.Dispose(disposing);
}
}



この場合は、base.Dispose(true)が複数回呼ばれる可能性がある。でも基底クラスのDispose()もパターンに則って書かれているはずだから、問題はでないはず...
僕の好みは、前者なんだけど、まあいいか。

でも、ドキュメントに書かれているコードで、FxCopが警告を出すってのは、どうなんだろう?


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50979762