Generics & Anonymous Delegate
Type[] types = Array.FindAll(assembly.GetExportedTypes(), delegate(Type type) { return (!type.IsAbstract && type.IsClass); }); Array.Sort (types, delegate(Type type1, Type type2) { if (type1 == type2) return 0; return type1.AssemblyQualifiedName.CompareTo(type2.AssemblyQualifiedName); });
C#2.0の特徴であるGenericsと匿名Delegateを多用したロジック。現在実行中のアセンブリから、公開されている具象クラスのTypeオブジェクトを配列に抽出して、完全修飾名の順でソートしている。
Genericsと匿名デリゲートの組み合わせは、慣れると非常に効率良くループや比較判定処理のコードが書けるのだが、果たしてこれが本当に保守性に寄与するのかどうか、それが問題だ。
慣れてしまえばどうってことは無いのだ、慣れてしまえば。