我有一个接受泛型委托作为参数的方法,并将其插入列表中:
public void AddFilterMember<T>(Func<T, bool> filterMember)
{
filter.Add(filterMember);
}
稍后,所有的委托都在T类型的实例上被调用,以查明这个实例是否通过了过滤器,即是否为每个调用的filterMember返回true。
我注意到可以传递一个无效的 lambda 表达式,如下所示:
string str = null;
AddFilterMember(x => str.Contains((string)x));
这显然会在调用时抛出异常,因为str字符串为空。所以我想知道在定义 lambda 表达式时针对空引用(除了它的参数)验证它的最佳方法吗?
我想一种选择是使用 T 的默认实例来调用它,但有时这是不可行的,因为 T 可能没有默认的无参数构造函数。
提前致谢!