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

Robert Smallshire robert at smallshire.org.uk
Thu Aug 6 22:53:10 CEST 2009


Hi Michael,

I'm afraid not:

>>> clr.GetClrType('')
TypeError: expected Type, got str

My hopes were momentarily raised when I discovered that your otherwise very
comprehensive book mentions typeof in the index (page 398) - but then I
found that you only use it from C#. 

Cheers,

Rob

>
> clr.GetClrType('') ? (on an instance of a string)
> 
> Michael
> 
> Robert Smallshire wrote:
> > Hello,
> >
> > 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
> > do:
> >
> > 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?
> >
> > Rob
> >
> > Robert Smallshire
> > robert at smallshire.org.uk
> > http://smallshire.org.uk/
> > Currently in Norway (UTC +2 hours)
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com 
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >   
> 
> 
> -- 
> http://www.ironpythoninaction.com/
> http://www.voidspace.org.uk/blog
> 
> 




More information about the Ironpython-users mailing list