示例#1
0
 public static void RegisterConvertQueryStringHanlder(Type[] types, HttpRequestConvertQueryStringHanlder hanlder)
 {
     if (hanlder == null)
     {
         throw new Exception("Hanlder不能为空");
     }
     foreach (var item in types)
     {
         if (item == null)
         {
             throw new Exception("Type不能为空");
         }
         if (_convertQueryStringHanlders.ContainsKey(item))
         {
             _convertQueryStringHanlders[item] = hanlder;
         }
         else
         {
             _convertQueryStringHanlders.Add(item, hanlder);
         }
     }
 }
示例#2
0
        private HttpRequestConvertQueryStringHanlder GetConvertQueryStringHanlder()
        {
            var queryStringDataType = QueryString.GetType();
            HttpRequestConvertQueryStringHanlder hanlder = null;

            if (_convertQueryStringHanlders.ContainsKey(queryStringDataType))
            {
                hanlder = _convertQueryStringHanlders[queryStringDataType];
            }
            if (hanlder == null)
            {
                var closestAncestor = queryStringDataType.FindClosestAncestor(_convertQueryStringHanlders.Keys);
                if (closestAncestor != null)
                {
                    hanlder = _convertQueryStringHanlders[closestAncestor];
                }
            }
            if (hanlder == null)
            {
                throw new Exception($"未注册DataType为{queryStringDataType.FullName}的QueryString序列化Hanlder");
            }
            return(hanlder);
        }