public override object Execute(IResolver resolver) { object leftResult = left.Execute(resolver); if (leftResult == null) { throw new Exception(String.Format("Formula error: Cannot get value of {0}.{1} because {0} is Null.", left.ToString(), right.ToString())); } if (right is IdentifierNode) { return(resolver.GetMemberValue(leftResult, ((IdentifierNode)right).Identifier)); } else { FunctionCallNode functionNode = (FunctionCallNode)right; functionNode.DeclaringType = leftResult.GetType(); return(functionNode.Execute(leftResult, resolver)); } }