Exemplo n.º 1
0
 public void WriteMethodLookup()
 {
     implementation.WriteLine("static MonoMethod* __method = nil;");
     implementation.WriteLine("if (!__method) {");
     implementation.WriteLineUnindented("#if TOKENLOOKUP");
     implementation.Indent++;
     implementation.WriteLine($"__method = mono_get_method (__{AssemblySafeName}_image, 0x{MetadataToken:X8}, {ObjCTypeName}_class);");
     implementation.WriteLineUnindented("#else");
     implementation.WriteLine($"const char __method_name [] = \"{ManagedTypeName}:{MonoSignature}\";");
     implementation.WriteLine($"__method = mono_embeddinator_lookup_method (__method_name, {ObjCTypeName}_class);");
     implementation.Indent--;
     implementation.WriteLineUnindented("#endif");
     implementation.WriteLine("}");
 }
        void WriteInitialize(string name)
        {
            implementation.WriteLine("+ (void) initialize");
            implementation.WriteLine("{");
            implementation.Indent++;
            implementation.WriteLine($"if (self != [{name} class])");
            implementation.Indent++;
            implementation.WriteLine("return;");
            implementation.Indent--;
            implementation.WriteLine($"__lookup_assembly_{AssemblyName} ();");

            implementation.WriteLineUnindented("#if TOKENLOOKUP");
            implementation.WriteLine($"{Name}_class = mono_class_get (__{AssemblyName}_image, 0x{MetadataToken:X8});");
            implementation.WriteLineUnindented("#else");
            implementation.WriteLine($"{Name}_class = mono_class_from_name (__{AssemblyName}_image, \"{Namespace}\", \"{ManagedName}\");");
            implementation.WriteLineUnindented("#endif");
            implementation.Indent--;
            implementation.WriteLine("}");
            implementation.WriteLine();
        }