[IronPython] Reflection.Emit from IronPython: What is the equivalent of typeof() in C# ?

Robert Smallshire robert at smallshire.org.uk
Thu Aug 6 22:04:45 CEST 2009


I'm attempting to drive the Reflection.Emit API from IronPython. In C#
typical Reflection.Emit use makes use typeof(...) facility in C#, to enable
the determination of types without needing an instance of that type.

For example, to create an array of .NET CTS Strings in IL from C# one might

generator.Emit(OpCodes.Newarr, typeof(string));

where the second argument to Emit is the element type of the array.

I've tried various alternatives from IronPython, including

generator.Emit(OpCodes.Newarr, System.Type.GetType('System.String'))
generator.Emit(OpCodes.Newarr, str().GetType())
generator.Emit(OpCodes.Newarr, System.String().GetType())
generator.Emit(OpCodes.Newarr, clr.GetClrType(System.String))

however, all of these result in RuntimeType[] rather than String[] in the
generated CIL.

How do I get typeof(System.String) from IronPython?


Robert Smallshire
robert at smallshire.org.uk
Currently in Norway (UTC +2 hours) 

More information about the Ironpython-users mailing list