public ServiceInfo GetService(string fullName) { var serviceModel = GetServices().FirstOrDefault(x => x.ServiceFullName == fullName); Type serviceType = serviceModel.ServiceType; try { serviceType = new HttpContextHelper().HttpContext.RequestServices.GetService(serviceType).GetType(); } catch { } foreach (var prop in serviceType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { serviceModel.Properties.Add(new ServicePropertyInfo { Id = prop.Name, Name = prop.Name, GetSet = "{" + (prop.GetMethod != null ? (prop.GetMethod.IsPublic ? " get;" : "") + (prop.GetMethod.IsPrivate ? " private get;" : "") : "") + (prop.SetMethod != null ? (prop.SetMethod.IsPublic ? " set;" : "") + (prop.SetMethod.IsPrivate ? " private set;" : "") : "") + " }", PropertyType = prop.PropertyType.GetFriendlyName(), Poperty = prop }); } foreach (var field in serviceType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { serviceModel.Fields.Add(new ServiceFieldInfo { Id = field.Name, Name = field.Name, Accessor = (field.IsPublic ? "public" : "") + (field.IsPrivate ? "private" : ""), FieldType = field.FieldType.GetFriendlyName(), Field = field }); } foreach (var method in serviceType.GetMethods()) { var methodParameter = method.GetParameters(); string methodParameters = "("; for (int i = 0; i < methodParameter.Length; i++) { if (i > 0) { methodParameters += ", "; } methodParameters += methodParameter[i].ParameterType.GetFriendlyName() + " " + methodParameter[i].Name; } methodParameters += ")"; string name = method.ReturnType + " " + method.Name + " " + methodParameters; serviceModel.Methods.Add(new ServiceMethodInfo { Id = name, MethodName = method.Name, MethodReturnType = method.ReturnType.GetFriendlyName(), MethodParameters = methodParameters, MethodAccessor = (method.IsPublic ? "public" : "") + (method.IsPrivate ? "private" : ""), Method = method }); } return(serviceModel); }