Example #1
0
 internal override int ImportTo(Emit.ModuleBuilder module)
 {
     if (methodArgs == null)
     {
         return(module.ImportMethodOrField(declaringType, method.Name, method.MethodSignature));
     }
     else
     {
         Writer.ByteBuffer spec = new Writer.ByteBuffer(10);
         Signature.WriteMethodSpec(module, spec, methodArgs);
         Metadata.MethodSpecTable.Record rec = new Metadata.MethodSpecTable.Record();
         Emit.MethodBuilder mb = method as Emit.MethodBuilder;
         if (mb != null && mb.ModuleBuilder == module && !declaringType.IsGenericType)
         {
             rec.Method = mb.MetadataToken;
         }
         else
         {
             rec.Method = module.ImportMember(GetGenericMethodDefinition());
         }
         rec.Instantiation = module.Blobs.Add(spec);
         return(0x2B000000 | module.MethodSpec.FindOrAddRecord(rec));
     }
 }
Example #2
0
		internal override int ImportTo(Emit.ModuleBuilder module)
		{
			if (methodArgs == null)
			{
				return module.ImportMethodOrField(declaringType, method.Name, method.MethodSignature);
			}
			else
			{
				Writer.ByteBuffer spec = new Writer.ByteBuffer(10);
				Signature.WriteMethodSpec(module, spec, methodArgs);
				Metadata.MethodSpecTable.Record rec = new Metadata.MethodSpecTable.Record();
				Emit.MethodBuilder mb = method as Emit.MethodBuilder;
				if (mb != null && mb.ModuleBuilder == module && !declaringType.IsGenericType)
				{
					rec.Method = mb.MetadataToken;
				}
				else
				{
					rec.Method = module.ImportMember(GetGenericMethodDefinition());
				}
				rec.Instantiation = module.Blobs.Add(spec);
				return 0x2B000000 | module.MethodSpec.FindOrAddRecord(rec);
			}
		}