Не могли бы вы объяснить, что делает этот странный код?
expression.Compile()();
Почему здесь две пары круглых скобок? Я не нашел ничего в google. Полный метод
public Validator NotEmpty(Expression<Func<IEnumerable<T>>> expression)
{
var member = (MemberExpression)expression.Body;
string propertyName = member.Member.Name;
IEnumerable<T> value = expression.Compile()();
if (value == null || !value.Any())
{
ValidationResult.AddError(propertyName, "Shouldn't be empty");
}
return this;
}
Он используется следующим образом:
_validator.NotEmpty(() => request.PersonIds); // request.PersonIds is List<int>
Этот метод проверяет, является ли коллекция пустой или пустой. Все работает нормально, но я немного смущен этим кодом. Я никогда не видел использование двух пар круглых скобок раньше в С#. Что это значит?