GetXsdAttributeType() public static method

public static GetXsdAttributeType ( ParameterInfo parameter ) : string
parameter System.Reflection.ParameterInfo
return string
Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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)));
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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(");");
            }
        }
Esempio n. 5
0
        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(");");
            }
        }
Esempio n. 6
0
 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)));
     }
 }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
        }