汎用デリゲートをパラメーターとして受け取り、それをリストに挿入するメソッドがあります。
public void AddFilterMember<T>(Func<T, bool> filterMember)
{
filter.Add(filterMember);
}
その後、タイプTのインスタンスに対してすべてのデリゲートが呼び出され、このインスタンスがフィルターを通過するかどうか、つまり、呼び出されたすべてのfilterMemberに対してtrueが返されるかどうかが確認されます。
次のような無効なラムダ式を渡すことができることに気付きました。
string str = null;
AddFilterMember(x => str.Contains((string)x));
str文字列がnullであるため、呼び出されると明らかに例外がスローされます。したがって、ラムダ式が定義された時点で、null 参照 (パラメーター以外) に対してラムダ式を検証する最良の方法を知りたいですか?
T の既定のインスタンスを使用して呼び出すことも 1 つのオプションだと思いますが、T には既定のパラメーターなしのコンストラクターがない可能性があるため、これが実行できない場合があります。
前もって感謝します!