Если вы следуете совету @Henk Holterman, вы также хотите изменить значение WriteXML для цели на
writer.WriteAttributeString("Name",Name);
Вы также можете использовать вместо WriteXml ()
XmlSerializer xmlSerializer = new XmlSerializer(target.GetType());
xmlSerializer.Serialize(writer, target);
В любом случае вы должны получить:
<?xml version="1.0" encoding="utf-16" ?>
<SerializeTarget>
<Name />
<Targets>
<Target>
<Target Name="foo" />
</Target>
<Target>
<Target Name="foo2" />
</Target>
<Target>
<Target Name="foo3" />
</Target>
</Targets>
</SerializeTarget>