この記事の目的
この記事では、
log4netのAppenderCollectionクラス(カスタムコレクション)が作られた理由を自分なりにまとめること
を目的としています。
本題
- 前回までのあらすじ
- カスタムコレクションを作る理由とは(一般論)
- log4netではなぜつくったか?
前回までのあらすじ
前回は、カスタムコレクションに着目するきっかけとなったlog4netのコードをメモしました。
kinakomotitti.hatenablog.com
これといって情報はありませんがw
カスタムコレクションを作る理由とは(一般論)
Microsoft「通常は、カスタムコレクションを作るのではなく、提供しているコレクションを使ってね」
とのことでしたが、実際にlog4netではカスタムコレクションを使っています。
”通常”以外の利用方法が知りたいと思い、調査を進めました。
参考にしたのは以下の2つのQ&Aでの議論です。
softwareengineering.stackexchange.com
softwareengineering.stackexchange.com
上記議論から、カスタムコレクションを利用するとよいシナリオは以下のようなものだと感じました。
・Ilist
・AddやRemove処理で追加の処理が必要な場合
しかし、.NET 2.0以降、ジェネリックスのリリース以降では、カスタムコレクションを作るという選択肢は少なくなってきているようです。
Microsoftのいう通常というのは、「.NET Frameworkが比較的最近リリースされたものをターゲットにしている場合」ととらえてもよいのかもしれません。
逆に、通常ではない場合は、「.NET Framework2.0以前から開発しているライブラリやアプリケーションですでにカスタムコレクションを実装している場合」のことを指しているのではないかなと感じました。
既にある場合は、むりにList