System.Xml.Serialization.SerializationCodeGenerator.GenerateWriteAnyElementContent C# (CSharp) Method

GenerateWriteAnyElementContent() private method

private GenerateWriteAnyElementContent ( System.Xml.Serialization.XmlTypeMapMemberAnyElement member, string memberValue ) : void
member System.Xml.Serialization.XmlTypeMapMemberAnyElement
memberValue string
return void
		void GenerateWriteAnyElementContent (XmlTypeMapMemberAnyElement member, string memberValue)
		{
			bool singleElement = (member.TypeData.Type == typeof (XmlElement));
			string var, var2;
			
			var = GetObTempVar ();
			if (singleElement)
				var2 = memberValue;
			else {
				var2 = GetObTempVar ();
				WriteLineInd ("foreach (object " + var2 + " in " + memberValue + ") {");
			}
			WriteLine ("XmlNode " + var + " = " + var2 + " as XmlNode;");
			WriteLine ("if (" + var + " == null && " + var2 + "!= null) throw new InvalidOperationException (\"A member with XmlAnyElementAttribute can only serialize and deserialize certain XmlNode types.\");");

			string elem = GetObTempVar ();
			WriteLine ("XmlNode " + elem + " = " + var + ";");
			WriteLineInd ("if (" + elem + " is XmlElement) {");
			
			if (!member.IsDefaultAny) {
				for (int n=0; n<member.ElementInfo.Count; n++) {
					XmlTypeMapElementInfo info = (XmlTypeMapElementInfo)member.ElementInfo[n];
					string txt = "(" + elem + ".LocalName == " + GetLiteral(info.ElementName) + " && " + elem + ".NamespaceURI == " + GetLiteral(info.Namespace) + ")";
					if (n == member.ElementInfo.Count-1) txt += ") {";
					if (n == 0) WriteLineInd ("if (" + txt);
					else WriteLine ("|| " + txt);
				}				
			}

			if (_format == SerializationFormat.Literal) 
				WriteLine ("WriteElementLiteral (" + elem + ", \"\", \"\", false, true);");
			else 
				WriteLine ("WriteElementEncoded (" + elem + ", \"\", \"\", false, true);");

			if (!member.IsDefaultAny) {
				WriteLineUni ("}");
				WriteLineInd ("else");
				WriteLine ("throw CreateUnknownAnyElementException (" + elem + ".Name, " + elem + ".NamespaceURI);");
				Unindent ();
			}
			WriteLineUni ("}");
			WriteLine ("else " + elem + ".WriteTo (Writer);");
			
			if (!singleElement)
				WriteLineUni ("}");
		}
SerializationCodeGenerator