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); } } }
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); }