示例#1
0
 public Func <HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     if (pi.ParameterType == typeof(NameValueCollection))
     {
         return(DecodeFormUrlEncoding);
     }
     return(null);
 }
 public Func<HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     if (pi.ParameterType == typeof(HttpRequestMessage))
     {
         return req => req;
     }
     return null;
 }
 public Func<HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     if (pi.ParameterType == typeof(NameValueCollection))
     {
         return DecodeFormUrlEncoding;
     }
     return null;
 }
 public Func <HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     if (pi.ParameterType == typeof(HttpRequestMessage))
     {
         return(req => req);
     }
     return(null);
 }
        public Func <HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
        {
            if ((pi.ParameterType.IsPrimitive || pi.ParameterType == typeof(String)) && (attr.UriTemplate.PathSegmentVariableNames.Contains(pi.Name.ToUpper()) || attr.UriTemplate.QueryValueVariableNames.Contains(pi.Name.ToUpper())))
            {
                return(req => Convert.ChangeType(req.GetUriTemplateMatch().BoundVariables[pi.Name], pi.ParameterType));
            }

            return(null);
        }
        public Func<HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
        {
            if ((pi.ParameterType.IsPrimitive || pi.ParameterType == typeof(String)) && (attr.UriTemplate.PathSegmentVariableNames.Contains(pi.Name.ToUpper()) || attr.UriTemplate.QueryValueVariableNames.Contains(pi.Name.ToUpper())))
            {
                return req => Convert.ChangeType(req.GetUriTemplateMatch().BoundVariables[pi.Name], pi.ParameterType);
            }

            return null;
        }
        private Func <HttpRequestMessage, object> GetBinder(ParameterInfo pi, HttpMethodAttribute attr)
        {
            var b = _binder.TryGetBinder(pi, attr);

            if (b == null)
            {
                throw new Exception("Unable to find binder to " + pi.Name);
            }
            return(b);
        }
 public MethodBasedCommand(MethodInfo mi, HttpMethodAttribute attr, IEnumerable <Func <HttpRequestMessage, object> > binders)
 {
     _mi      = mi;
     _attr    = attr;
     _binders = binders.ToArray();
 }
 public MethodBasedCommand(MethodInfo mi, HttpMethodAttribute attr, IEnumerable<Func<HttpRequestMessage, object>> binders)
 {
     _mi = mi;
     _attr = attr;
     _binders = binders.ToArray();
 }
 private IEnumerable <Func <HttpRequestMessage, object> > ResolveBindersFor(MethodInfo mi, HttpMethodAttribute attr)
 {
     return(mi.GetParameters().Select(p => GetBinder(p, attr)));
 }
 public Func <HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     return(_coll.Select(b => b.TryGetBinder(pi, attr)).FirstOrDefault(f => f != null));
 }
 public Func<HttpRequestMessage, object> TryGetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     return _coll.Select(b => b.TryGetBinder(pi, attr)).FirstOrDefault(f => f != null);
 }
示例#13
0
 private IEnumerable<Func<HttpRequestMessage, object>> ResolveBindersFor(MethodInfo mi, HttpMethodAttribute attr)
 {
     return mi.GetParameters().Select(p => GetBinder(p, attr));
 }
示例#14
0
 private Func<HttpRequestMessage, object> GetBinder(ParameterInfo pi, HttpMethodAttribute attr)
 {
     var b = _binder.TryGetBinder(pi, attr);
     if (b == null) throw new Exception("Unable to find binder to " + pi.Name);
     return b;
 }