I am using .NET4.5
and C#
I fancied creating extension method that would allow me to pass property of object and if Id of that object is 0 then return null
otherwise return that property value.
I could do it no problem with reflection so consider this more of training exercise and not me trying to solve the actual problem.
Currently extension method is sitting in static
class looking like this:
public static object GetNullIfNotSet(this WillAnswer answer, Expression<Func<WillAnswer>> expression)
{
if (answer.Id == 0) return null;
return expression.Compile()();
}
The way I want to be able to use it is following (answer is of type WillAnswer
):
var emptyIfNewObject = answer.GetNullIfNotSet(o => o.HasBusinessAssets)
However it gives me compilation error:
Error 1 Delegate 'System.Func' does not take 1 arguments C:\hg\Website\Areas\Wills\ViewModel\Answers.cs 38 59 Website
Which makes me frown since I don't think I am passing any arguments (am I?). Could please someone smarter than myself explain which of my expectations is wrong.
Just in case I wasn't clear I will reiterate. What I want is to be able to call
var emptyIfNewObject = answer.GetNullIfNotSet(o => o.HasBusinessAssets)
and get null
if Id
of answer
is 0
.
answer.GetNullIfNotSet(() => (((Func<WillAnswer>)(() => answer.HasBusinessAssets))()));
what a mess! go back to haim770's answer :-) – RetentiveFunc
? – Peder