[IronPython] __clrtype__ and generics

Lukas Cenovsky cenovsky at bakalari.cz
Fri Dec 18 11:00:53 CET 2009

I haven't tried your code, but there are currently 2 small issues with 
clrtype.py I know of:

1. You cannot use iterable for @returns and @accepts - see 
http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=25448 I 
think your issue is similar.

2. You cannot use Python classes with clrtype.ClrClass metaclass in 
@accepts and @returns.

Both issues can be fixen in validate_clr_types function in clrtype.py. 
Here is my version:

def validate_clr_types(signature_types, var_signature = False):
    if not isinstance(signature_types, tuple):
        signature_types = (signature_types,)
    for t in signature_types:
        clr_type = clr.GetClrType(t)
        if t == Void:
            raise TypeError("Void cannot be used in signature")
        if clr.GetPythonType(clr_type) != t and \
                clr.GetPythonType(clr_type) != clr.GetPythonType(t):
            raise Exception, "Invalid CLR type %s" % str(t)
        if not var_signature:
            if clr_type.IsByRef:
                raise TypeError("Byref can only be used as arguments and 
            # ArgIterator is not present in Silverlight
            if hasattr(System, "ArgIterator") and t == System.ArgIterator:
                raise TypeError("Stack-referencing types can only be 
used as arguments and locals")

-- Lukás(

Simon Segal wrote:
> I am curious as to how to define a 
> System.Collections.Generic.ICollection as per the below with 
> @clrtype.accepts and @clrtype.returns. Same question goes for 
> _clrfields where I want an ICollection<T> (c#) as a field.
> @property
> @clrtype.accepts()
> @clrtype.returns(ICollection[Order])
> def Orders(self): return self._orders
> @Orders.setter
> @clrtype.accepts(ICollection[Order])
> @clrtype.returns()
> def Orders(self, value): self._orders = value
> Thanks,
> Simon
> ------------------------------------------------------------------------
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20091218/309503e1/attachment.html>

More information about the Ironpython-users mailing list