private void WriteDerivedTypes(StructMapping mapping, bool isTypedReturn, string returnTypeName)
{
for (StructMapping derived = mapping.DerivedMappings; derived != null; derived = derived.NextDerivedMapping)
{
Writer.Write("else if (");
WriteQNameEqual("xsiType", derived.TypeName, derived.Namespace);
Writer.WriteLine(")");
Writer.Indent++;
string methodName = ReferenceMapping(derived);
#if DEBUG
// use exception in the place of Debug.Assert to avoid throwing asserts from a server process such as aspnet_ewp.exe
if (methodName == null) throw new InvalidOperationException(SR.Format(SR.XmlInternalErrorMethod, derived.TypeDesc.Name));
#endif
Writer.Write("return ");
if (derived.TypeDesc.UseReflection && isTypedReturn)
Writer.Write("(" + returnTypeName + ")");
Writer.Write(methodName);
Writer.Write("(");
if (derived.TypeDesc.IsNullable)
Writer.Write("isNullable, ");
Writer.WriteLine("false);");
Writer.Indent--;
WriteDerivedTypes(derived, isTypedReturn, returnTypeName);
}
}