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

Shri Borde Shri.Borde at microsoft.com
Thu Aug 6 23:17:25 CEST 2009


You can also just use the type like "System.String" to avoid having to create an instance of the type.

>>> import System
>>> import clr
>>> clr.GetClrType(System.String)
<System.RuntimeType object at 0x000000000000002B [System.String]>

-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Dave Fugate
Sent: Thursday, August 06, 2009 2:07 PM
To: robert at smallshire.org.uk; Discussion of IronPython; 'Michael Foord'
Subject: Re: [IronPython] Reflection.Emit from IronPython: What is the equivalent of typeof() in C# ?

Try:
    clr.GetClrType(type(''))


David Fugate
Microsoft - IronPython
http://knowbody.livejournal.com

-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Robert Smallshire
Sent: Thursday, August 06, 2009 1:53 PM
To: 'Michael Foord'; 'Discussion of IronPython'
Subject: Re: [IronPython] Reflection.Emit from IronPython: What is the equivalent of typeof() in C# ?

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
>
>

_______________________________________________
Users mailing list
Users at lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

_______________________________________________
Users mailing list
Users at lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




More information about the Ironpython-users mailing list