private void WriteNullableMethod(NullableMapping nullableMapping)
{
string methodName = (string)MethodNames[nullableMapping];
bool useReflection = nullableMapping.BaseMapping.TypeDesc.UseReflection;
string typeName = useReflection ? "object" : nullableMapping.TypeDesc.CSharpName;
Writer.WriteLine();
Writer.Write(typeName);
Writer.Write(" ");
Writer.Write(methodName);
Writer.WriteLine("(bool checkType) {");
Writer.Indent++;
Writer.Write(typeName);
Writer.Write(" o = ");
if (useReflection)
{
Writer.Write("null");
}
else
{
Writer.Write("default(");
Writer.Write(typeName);
Writer.Write(")");
}
Writer.WriteLine(";");
Writer.WriteLine("if (ReadNull())");
Writer.Indent++;
Writer.WriteLine("return o;");
Writer.Indent--;
ElementAccessor element = new ElementAccessor();
element.Mapping = nullableMapping.BaseMapping;
element.Any = false;
element.IsNullable = nullableMapping.BaseMapping.TypeDesc.IsNullable;
WriteElement("o", null, null, element, null, null, false, false, -1, -1);
Writer.WriteLine("return o;");
Writer.Indent--;
Writer.WriteLine("}");
}