private bool IsStatic(MethodBase[] methods) { if (methods == null) { return(false); } foreach (var method in methods) { var parameters = method.GetParameters(); foreach (ParameterInfo parameter in parameters) { string xsdTypeName = MagickScriptTypes.GetXsdAttributeType(parameter); if (xsdTypeName != null) { return(false); } string typeName = GetName(parameter); if (!HasStaticCreateMethod(typeName)) { return(false); } } } return(true); }
private XElement CreateElement(PropertyInfo property) { string name = MagickScriptTypes.GetXsdName(property); string attributeTypeName = MagickScriptTypes.GetXsdAttributeType(property); if (attributeTypeName != null) { XElement complexType = new XElement(_Namespace + "complexType"); complexType.Add(new XElement(_Namespace + "attribute", new XAttribute("name", "value"), new XAttribute("use", "required"), new XAttribute("type", attributeTypeName))); return(new XElement(_Namespace + "element", new XAttribute("name", name), complexType)); } else { string elementTypeName = MagickScriptTypes.GetXsdElementType(property); if (string.IsNullOrEmpty(elementTypeName)) { throw new NotImplementedException("CreateElement: " + name); } return(new XElement(_Namespace + "element", new XAttribute("name", name), new XAttribute("type", elementTypeName))); } }
private void AddParameterAttributes(XElement complexType, ParameterInfo[] parameters, string[] requiredParameters) { foreach (var parameter in from parameter in parameters let typeName = MagickScriptTypes.GetXsdAttributeType(parameter) where typeName != null orderby parameter.Name select new { Name = parameter.Name, TypeName = typeName, IsRequired = requiredParameters.Contains(parameter.Name) }) { XElement attribute = new XElement(_Namespace + "attribute", new XAttribute("name", parameter.Name)); if (parameter.IsRequired) { attribute.Add(new XAttribute("use", "required")); } attribute.Add(new XAttribute("type", parameter.TypeName)); complexType.Add(attribute); } }
protected void WriteGetValue(PropertyInfo property) { string typeName = GetName(property); string xsdTypeName = MagickScriptTypes.GetXsdAttributeType(property); if (xsdTypeName != null) { WriteGetElementValue(typeName, "value"); } else { WriteCreateMethod(typeName); Write("("); WriteSelectElement(typeName, null); WriteLine(");"); } }
private void WriteGetValue(ParameterInfo parameter) { string typeName = GetName(parameter); string xsdTypeName = MagickScriptTypes.GetXsdAttributeType(parameter); if (xsdTypeName != null) { WriteGetElementValue(typeName, parameter.Name); } else { WriteCreateMethod(typeName); Write("("); WriteSelectElement(typeName, parameter.Name); WriteLine(");"); } }
private void AddClassAttributes(XElement complexType, IEnumerable <PropertyInfo> properties) { foreach (var property in from property in properties let typeName = MagickScriptTypes.GetXsdAttributeType(property) where typeName != null let name = MagickScriptTypes.GetXsdName(property) orderby name select new { Name = name, TypeName = typeName }) { complexType.Add(new XElement(_Namespace + "attribute", new XAttribute("name", property.Name), new XAttribute("type", property.TypeName))); } }
private void WriteAttributeForEach(ParameterInfo[] allParameters) { ParameterInfo[] parameters = allParameters.Where(p => MagickScriptTypes.GetXsdAttributeType(p) != null).ToArray(); if (parameters.Length == 0) { return; } parameters = parameters.OrderBy(p => p.Name).ToArray(); WriteLine("foreach (XmlAttribute attribute in element.Attributes)"); WriteStartColon(); if (parameters.DistinctBy(p => GetName(p)).Count() == 1) { Write("arguments[attribute.Name] = GetValue<"); Write(GetName(parameters[0])); WriteLine(">(attribute);"); } else { for (int i = 0; i < parameters.Length; i++) { string xsdName = MagickScriptTypes.GetXsdName(parameters[i]); if (i > 0) { Write("else "); } Write("if (attribute.Name == \""); Write(xsdName); WriteLine("\")"); Indent++; Write("arguments[\""); Write(xsdName); Write("\"] = "); WriteGetAttributeValue(GetName(parameters[i])); Indent--; } } WriteEndColon(); }
private void WriteElementForEach(ParameterInfo[] allParameters) { ParameterInfo[] parameters = allParameters.Where(p => MagickScriptTypes.GetXsdAttributeType(p) == null).ToArray(); if (parameters.Length == 0) { return; } WriteLine("foreach (XmlElement elem in element.SelectNodes(\"*\"))"); WriteStartColon(); if (parameters.DistinctBy(p => GetName(p)).Count() == 1) { Write("arguments[elem.Name] = "); WriteCreateMethod(GetName(parameters[0])); WriteLine("(elem);"); } else { for (int i = 0; i < parameters.Length; i++) { string xsdName = MagickScriptTypes.GetXsdName(parameters[i]); if (i > 0) { Write("else "); } Write("if (elem.Name == \""); Write(xsdName); WriteLine("\")"); Indent++; Write("arguments[\""); Write(xsdName); Write("\"] = "); WriteCreateMethod(GetName(parameters[i])); WriteLine("(elem);"); Indent--; } } WriteEndColon(); }