private ServiceInfo GetServiceInfoFromMethodInfo(MethodInfo method, List <XElement> elementList, bool isHiddenDiscovery) { ServiceInvoker attribute = method.GetCustomAttribute <ServiceInvoker>(true); string key = ServicePool.Instance.GetIntefaceName(method.DeclaringType.FullName, method.Name);; string module = ""; if (attribute != null) { //如果方法上设置了不可用,那么该方法就不进入服务池 if (!attribute.Enabled) { return(null); } //获得设置的接口名称 if (!string.IsNullOrEmpty(attribute.InterfaceName)) { key = attribute.InterfaceName; } //获得模块名称 if (!string.IsNullOrEmpty(attribute.Module)) { module = attribute.Module; } } //如果方法或者类上设置了隐藏发现,就不能通过这个方法显示出来 if (!isHiddenDiscovery && attribute != null && attribute.IsHiddenDiscovery) { isHiddenDiscovery = true; } string description = ""; string returnDesc = ""; List <ServiceParameter> parameters = null; XElement methodElement = null; if (elementList != null) { methodElement = elementList.Find(t => t.Attribute("name").Value.StartsWith("M:" + key)); } #region 获得回参和注释 if (methodElement != null) { description = methodElement.Element("summary") != null?methodElement.Element("summary").Value.Trim('\n', ' ') : ""; returnDesc = methodElement.Element("returns") != null?methodElement.Element("returns").Value.Trim('\n', ' ') : ""; } #endregion #region 处理参数信息 ParameterInfo[] param = method.GetParameters(); if (param.Length > 0) { parameters = new List <ServiceParameter>(); foreach (ParameterInfo p in param) { ServiceParameter sp = new ServiceParameter { Index = p.Position, Name = p.Name, TypeInfo = new SOAFramework.Service.Core.Model.TypeInfo { FullTypeName = p.ParameterType.FullName, TypeName = GetTypeName(p.ParameterType), IsClass = IsCustomClassType(p.ParameterType), NameSpace = p.ParameterType.Namespace, }, }; XElement paramElement = null; if (methodElement != null) { paramElement = methodElement.Descendants("param").FirstOrDefault(t => t.Attribute("name").Value.Equals(p.Name)); } if (paramElement != null && !string.IsNullOrEmpty(paramElement.Value)) { sp.Description = paramElement.Value; } parameters.Add(sp); } } #endregion #region 设置serviceinfo ServiceInfo info = new ServiceInfo { InterfaceName = key, Parameters = parameters, Module = module, ReturnTypeInfo = new SOAFramework.Service.Core.Model.TypeInfo { FullTypeName = method.ReturnType.FullName, TypeName = GetTypeName(method.ReturnType), IsClass = IsCustomClassType(method.ReturnType), NameSpace = method.ReturnType.Namespace, }, IsHidden = isHiddenDiscovery, Description = description.Trim(), ReturnDesc = returnDesc.Trim(), Assembly = method.DeclaringType.Assembly, }; #endregion return(info); }
Task <ServiceResponse <Brewery> > IBreweryServiceProxy.GetBreweries(ServiceParameter parameter) { return(service.GetBreweries(parameter)); }
//--------------------------------------------------------------------------------------------------------------------- public void LoadFromXml(XmlDocument definitionDocument) { XmlElement paramsElement = null, element; foreach (XmlNode node in definitionDocument.DocumentElement.ChildNodes) { if ((element = node as XmlElement) != null && element.Name == "params") { paramsElement = element; break; } } if (paramsElement == null) { return; } if (String.Compare(Service.DefinitionVersion, "2.0") >= 0) // new service.xml format { foreach (XmlNode node in paramsElement.ChildNodes) { element = node as XmlElement; if (element == null) { continue; } switch (element.Name) { case "input": //ProcessingInputSet input = new ProcessingInputSet(this, element); break; case "processing": GetDefinedProcessingParameters(element); break; case "output": //ProcessingOutputSet output = new ProcessingOutputSet(this, element); break; } } } else // old service.xml format { Inputs.Add(new ProcessingInputSet(this)); Outputs.Add(new ProcessingOutputSet(this)); foreach (XmlNode node in paramsElement.ChildNodes) { XmlElement subElement = node as XmlElement; if (subElement == null) { continue; } string source = (subElement.HasAttribute("source") ? subElement.Attributes["source"].Value : null); string type = (subElement.HasAttribute("type") ? subElement.Attributes["type"].Value : null); switch (source) { case "series": case "Task.Series": Inputs[0].CollectionParameter = new ServiceInputCollectionParameter(Inputs[0], subElement); Add(Inputs[0].CollectionParameter); break; case "dataset": case "Task.InputFiles": Inputs[0].ProductParameter = new ServiceInputProductParameter(Inputs[0], subElement); Add(Inputs[0].ProductParameter); break; case "computingResource": case "Task.ComputingResource": case "computingElement": case "Task.ComputingElement": ComputingResourceParameter = new ServiceComputingResourceParameter(this, subElement); Add(ComputingResourceParameter); break; case "priority": case "Task.Priority": PriorityParameter = new ServicePriorityParameter(this, subElement); Add(PriorityParameter); break; case "publishServer": case "Task.PublishServer": Outputs[0].LocationParameter = new ServiceOutputLocationParameter(Outputs[0], subElement); Add(Outputs[0].LocationParameter); break; case "compress": case "Task.Compression": Outputs[0].CompressionParameter = new ServiceOutputCompressionParameter(Outputs[0], subElement); Add(Outputs[0].CompressionParameter); break; /*case "register" : * case "Task.RegisterOutput" : * CheckAutoRegister(param); * break;*/ default: if (type == "caption") { NameParameter = new ServiceProcessNameParameter(this, subElement); Add(NameParameter); } else { ServiceParameter param = new ServiceParameter(this, subElement); Add(param); if (param.SearchExtension != null) { Inputs[0].SearchParameters.Add(param); } } break; } } } }
public Task <ServiceResponse <Brewery> > GetBreweries(ServiceParameter parameter) { throw new NotImplementedException(); }
internal static void GXToDynamoQueryParameter(string prefix, Dictionary <string, AttributeValue> dynParm, ServiceParameter parm) { AttributeValue v = ToAttributeValue(parm.DbType, parm.Value, true); if (v != null) { dynParm[$"{prefix}{parm.ParameterName}"] = v; } }