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] = Variables.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();
}