private void WriteCreateMapping(TypeMapping mapping, string local)
{
string fullTypeName = mapping.TypeDesc.CSharpName;
bool useReflection = mapping.TypeDesc.UseReflection;
bool ctorInaccessible = mapping.TypeDesc.CannotNew;
Writer.Write(useReflection ? "object" : fullTypeName);
Writer.Write(" ");
Writer.Write(local);
Writer.WriteLine(";");
if (ctorInaccessible)
{
Writer.WriteLine("try {");
Writer.Indent++;
}
Writer.Write(local);
Writer.Write(" = ");
Writer.Write(RaCodeGen.GetStringForCreateInstance(fullTypeName, useReflection, mapping.TypeDesc.CannotNew, true));
Writer.WriteLine(";");
if (ctorInaccessible)
{
WriteCatchException(typeof(MissingMethodException));
Writer.Indent++;
Writer.Write("throw CreateInaccessibleConstructorException(");
WriteQuotedCSharpString(fullTypeName);
Writer.WriteLine(");");
WriteCatchException(typeof(SecurityException));
Writer.Indent++;
Writer.Write("throw CreateCtorHasSecurityException(");
WriteQuotedCSharpString(fullTypeName);
Writer.WriteLine(");");
Writer.Indent--;
Writer.WriteLine("}");
}
}