/// <summary> /// 获取JsonModle /// </summary> /// <param name="type">类型</param> /// <param name="propertyMembers">属性注释内容</param> /// <param name="depth">模型深度</param> /// <returns></returns> private void GetJsonModle(Type type, List <Member> propertyMembers, int depth, ref List <JsonModle> list) { List <FieldInfo> fields = type.GetFields().ToList(); List <PropertyInfo> properties = type.GetProperties().ToList(); string memberName_P = string.Format("P:{0}.{1}.", type.Namespace, type.Name); string memberName_F = string.Format("F:{0}.{1}.", type.Namespace, type.Name); foreach (FieldInfo field in fields) { JsonModle oldModel = list.Where(t => t.ColumName == field.Name).FirstOrDefault(); if (oldModel != null) { list.Remove(oldModel); } JsonModle jsonModel = new JsonModle(); jsonModel.ColumName = field.Name; Member member = propertyMembers.Where(t => t.Name == (memberName_F + field.Name)).FirstOrDefault(); if (member != null) { jsonModel.ColumSummary = member.Summary.Value; } else { jsonModel.ColumSummary = string.Empty; } jsonModel.ColumType = GetTypeName(field.FieldType); jsonModel.ChildColumList = GetChildColumList(field.FieldType, propertyMembers, depth + 1); jsonModel.DefaultValue = string.Empty; list.Add(jsonModel); } foreach (PropertyInfo property in properties) { JsonModle oldModel = list.Where(t => t.ColumName == property.Name).FirstOrDefault(); if (oldModel != null) { list.Remove(oldModel); } JsonModle jsonModel = new JsonModle(); jsonModel.ColumName = property.Name; Member member = propertyMembers.Where(t => t.Name == (memberName_P + property.Name)).FirstOrDefault(); if (member != null) { jsonModel.ColumSummary = member.Summary.Value; } else { jsonModel.ColumSummary = string.Empty; } jsonModel.ColumType = GetTypeName(property.PropertyType); jsonModel.ChildColumList = GetChildColumList(property.PropertyType, propertyMembers, depth + 1); jsonModel.DefaultValue = string.Empty; list.Add(jsonModel); } if (type.BaseType.Namespace != "System") { GetJsonModle(type.BaseType, propertyMembers, depth, ref list); } }
/// <summary> /// 获取详细方法模型 根据控制器名称和方法名称 /// </summary> /// <param name="ControllerName">控制器名称</param> /// <param name="MethodName">方法名称</param> /// <returns></returns> private MethodModel GetMethodModelByName(string ControllerName, string MethodName) { Assembly asmb = Assembly.LoadFrom(assemlyUrl); List <Member> propertyMembers = LoadXMLHelper.LoadXML().Where(t => t.PreWord == 'P' || t.PreWord == 'F').ToList(); Member member = LoadXMLHelper.LoadXML().Where(t => t.PreWord == 'M' && t.ControllerName == ControllerName && t.MethodName == MethodName).FirstOrDefault(); MethodModel methodModel = new MethodModel(); if (member == null) { return(methodModel); } methodModel = new MethodModel(member); Type type = asmb.GetType(member.ControllerNamespace); MethodInfo methodInfo = type.GetMethod(member.MethodName); ParameterInfo[] paramInfoArr = methodInfo.GetParameters(); foreach (ParameterInfo paramInfo in paramInfoArr) { JsonModle paramModel = new JsonModle(); paramModel.ColumName = paramInfo.Name; Param param = member.ParamList.Where(t => t.Name == paramInfo.Name).FirstOrDefault(); if (param != null) { paramModel.ColumSummary = param.Value; } else { paramModel.ColumSummary = string.Empty; } paramModel.ColumType = GetTypeName(paramInfo.ParameterType); paramModel.ChildColumList = GetChildColumList(paramInfo.ParameterType, propertyMembers, 1); paramModel.DefaultValue = paramInfo.DefaultValue.ToString(); methodModel.ParamList.Add(paramModel); } //响应内容 if (!string.IsNullOrWhiteSpace(member.Returns.AssemblyName) && !string.IsNullOrWhiteSpace(member.Returns.TypeFullName)) { try { string return_assemlyUrl = System.AppDomain.CurrentDomain.RelativeSearchPath + "/" + member.Returns.AssemblyName; Assembly return_asmb = Assembly.LoadFrom(return_assemlyUrl); Type return_type = return_asmb.GetType(member.Returns.TypeFullName); methodModel.ReturnList = GetChildColumList(return_type, propertyMembers, 0); } catch { } } return(methodModel); }