[Mono-dev] Porting mcs to IKVM.Reflection

Jeroen Frijters jeroen at sumatra.nl
Fri May 7 09:32:55 EDT 2010


Hi Kornél,

This has now been fixed.

Thanks,
Jeroen

> -----Original Message-----
> From: Kornél Pál [mailto:kornelpal at gmail.com]
> Sent: Friday, May 07, 2010 10:33 AM
> To: Jeroen Frijters
> Cc: Marek Safar; mono-devel; Miguel de Icaza
> Subject: Re: Porting mcs to IKVM.Reflection
> 
> Hi,
> 
> Thank you for applying/enhacing the patches. I'll check it out.
> 
> This code will work on both of Mono and MS.NET, but will fail without
> the WriteGenericSignature patch:
> 
> AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(new
> AssemblyName("myassembly"), AssemblyBuilderAccess.Save);
> ModuleBuilder mb = ab.DefineDynamicModule("myassembly",
> "myassembly.dll");
> TypeBuilder tb = mb.DefineType("mytype", TypeAttributes.Public);
> tb.DefineGenericParameters(new string[] { "T", "U" });
> ConstructorBuilder cb =
> tb.DefineDefaultConstructor(MethodAttributes.Public);
> MethodBuilder method = tb.DefineMethod("mymethod",
> MethodAttributes.Static | MethodAttributes.Public, tb, Type.EmptyTypes);
> ILGenerator ig = method.GetILGenerator();
> ig.DeclareLocal(tb);
> ig.Emit(OpCodes.Newobj, cb);
> ig.Emit(OpCodes.Stloc_0);
> ig.Emit(OpCodes.Ldloc_0);
> ig.Emit(OpCodes.Ret);
> tb.CreateType();
> ab.Save("myassembly.dll");
> 
> Although using a generic type definition directly makes little sense,
> neither makes using tb.MakeGenericType(tb.GetGenericArguments()) much
> more sense, since you still can use the latter in a context that has
> fewer generic arguments.
> 
> Kornél
> 
> Jeroen Frijters wrote:
> > Hi Kornél,
> >
> > I've fixed most of the things that your patch addressed. I also
> removed support for the TypeForwardedToAttribute and
> DefaultParameterValueAttribute pseudo custom attributes (because I
> realized that supporting them is incompatible with my goal to be a drop
> in replacement for System.Reflection.Emit).
> >
> > One thing I didn't change is WriteGenericSignature, because your
> change didn't make sense to me. It should not be possible that this
> method gets called with a generic type definition.
> >
> > I have not yet added anything additional for version info unmanaged
> resources. I need to do more thinking about this.
> >
> > Regards,
> > Jeroen
> >


More information about the Mono-devel-list mailing list