public void GenerateWriter (string writerClassName, ArrayList maps)
{
_mapsToGenerate = new ArrayList ();
InitHooks ();
if (_config == null || !_config.GenerateAsInternal)
WriteLine ("public class " + writerClassName + " : XmlSerializationWriter");
else
WriteLine ("internal class " + writerClassName + " : XmlSerializationWriter");
WriteLineInd ("{");
WriteLine ("const string xmlNamespace = \"http://www.w3.org/2000/xmlns/\";");
// ToBinHexString() is not public, so use reflection here.
WriteLine ("static readonly System.Reflection.MethodInfo toBinHexStringMethod = typeof (XmlConvert).GetMethod (\"ToBinHexString\", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, new Type [] {typeof (byte [])}, null);");
WriteLine ("static string ToBinHexString (byte [] input)");
WriteLineInd ("{");
WriteLine ("return input == null ? null : (string) toBinHexStringMethod.Invoke (null, new object [] {input});");
WriteLineUni ("}");
for (int n=0; n<maps.Count; n++)
{
GenerationResult res = (GenerationResult) maps [n];
_typeMap = res.Mapping;
_format = _typeMap.Format;
_result = res;
GenerateWriteRoot ();
}
for (int n=0; n<_mapsToGenerate.Count; n++)
{
XmlTypeMapping map = (XmlTypeMapping) _mapsToGenerate[n];
GenerateWriteObject (map);
if (map.TypeData.SchemaType == SchemaTypes.Enum)
GenerateGetXmlEnumValue (map);
}
GenerateWriteInitCallbacks ();
UpdateGeneratedTypes (_mapsToGenerate);
WriteLineUni ("}");
}