C#の最近のブログ記事

C# のいわゆる lock は、ロックがなされることを保証はしてくれるのですが、複数の待ちスレッドが発生した場合に順序性が担保されません。

どうにかして順序性を確保できないかなぁと思ったのですが...

今日は、継承可能なシングルトンクラスについてです。

一般的なシングルトンパターンは、private static なインスタンスフィールドの初期化子を使って生成したインスタンスを、プロパティから参照することで実装します。

でも、シングルトンな管理クラスを作成して、その派生クラスに独自処理を実装したいとします。

ジェネリックを駆使すると、万人向けにならないので、ある程度はテンプレートコーディングとして考えた場合にどうあるか。

C# の IDisposable の実装は、Dispose() だけを考えればシンプルです。 が、少し凝ったことをしようとすると、クラスにアンマネージドなリソースを抱えざるを得ないこともあります。そのような場合には、ファイナライザの挙動も考慮に入れて、さらには new() したけれども Dispose() してくれない利用者のことも考慮に入れる必要があります。 また、派生クラスをチームで製作する場合には特に、分業で作業してもバグの少ないコードスタイルがよいでしょう。 下記に示すコードは、安全なリソースの解放を考慮し、継承処理も念頭に置いた IDisposable の実装例です。

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちC#カテゴリに属しているものが含まれています。

次のカテゴリはWindowsです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ