private void WriteAttribute(string source, AttributeAccessor attribute, string parent)
{
if (attribute.Mapping is SpecialMapping)
{
SpecialMapping special = (SpecialMapping)attribute.Mapping;
if (special.TypeDesc.Kind == TypeKind.Attribute || special.TypeDesc.CanBeAttributeValue)
{
Writer.Write("WriteXmlAttribute(");
Writer.Write(source);
Writer.Write(", ");
Writer.Write(parent);
Writer.WriteLine(");");
}
else
throw new InvalidOperationException(SR.XmlInternalError);
}
else
{
TypeDesc typeDesc = attribute.Mapping.TypeDesc;
if (!typeDesc.UseReflection) source = "((" + typeDesc.CSharpName + ")" + source + ")";
WritePrimitive("WriteAttribute", attribute.Name, attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : "", attribute.Default, source, attribute.Mapping, false, false, false);
}
}