/// <summary>
        /// Configuration entry (c# inline)
        ///  {
        ///     new Resolver() {
        ///       Alias = "GetFrom",
        ///       Arguments = 2,
        ///       Name = "SayHello"
        ///     }
        /// }
        /// Arguments:
        /// 1 - source := "current,parent,parents,filter,data,client,server,sequrity,input"
        /// 2 - name := string - the name of the parameter to look for or the literal name to use the name under which the parameter is specified in the SQL.
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="inargs"></param>
        /// <returns></returns>
        public ParameterResolverValue GetFrom(IParameterResolverContext ctx, IList <ParameterResolverValue> args)
        {
            ResolverArguments <ParameterResolverValue> argsCasted = args as ResolverArguments <ParameterResolverValue>;
            string paramName = argsCasted[1].Value as string;
            string source    = argsCasted[0].Value as string;

            return(new ParameterResolverValue(StdGetParameterValue(source, paramName, ctx)));
        }
        public ParameterResolverValue GetUserDetails(IParameterResolverContext ctx, IList <ParameterResolverValue> args)
        {
            ResolverArguments <ParameterResolverValue> argsCasted = args as ResolverArguments <ParameterResolverValue>;
            string paramName  = argsCasted[0].Value as string;
            var    inputModel = ctx.ProcessingContext.InputModel;

            switch (paramName)
            {
            case "firstname":
            {
                return(new ParameterResolverValue(inputModel.SecurityModel.FirstName));
            }

            case "lastname":
            {
                return(new ParameterResolverValue(inputModel.SecurityModel.LastName));
            }

            default:
                break;
            }
            throw new Exception($"The requested parameter with {paramName} is not supported.");
        }