Я использую .NET4.5
и C#
Мне понравилось создание метода расширения, который позволил бы мне передать свойство объекта, и если Id этого объекта равен 0, тогда return null
в противном случае вернет это значение свойства.
Я мог бы сделать это без проблем с отражением, поэтому рассмотрим это больше упражнений по обучению, а не меня, пытаясь решить реальную проблему.
В настоящее время метод расширения находится в классе static
, который выглядит следующим образом:
public static object GetNullIfNotSet(this WillAnswer answer, Expression<Func<WillAnswer>> expression)
{
if (answer.Id == 0) return null;
return expression.Compile()();
}
Способ, которым я хочу использовать его, следующий (ответ имеет тип WillAnswer
):
var emptyIfNewObject = answer.GetNullIfNotSet(o => o.HasBusinessAssets)
Однако это дает мне ошибку компиляции:
Ошибка 1 Делегат 'System.Func' не принимает 1 аргументы C:\hg\Website\Areas\Wills\ViewModel\Answers.cs 38 59 Веб-сайт
Что заставляет меня хмуриться, так как я не думаю, что передаю какие-либо аргументы (я?). Может ли кто-нибудь умнее меня объяснить, какие из моих ожиданий ошибочны.
На всякий случай я был неясен, я повторю. Я хочу, чтобы я мог позвонить var emptyIfNewObject = answer.GetNullIfNotSet(o => o.HasBusinessAssets)
и получите null
, если Id
of answer
- 0
.