[IronPython] __clrtype__ and generics

Simon Segal simon.segal at bigpond.com
Fri Dec 18 12:07:07 CET 2009


Thanks a lot Lukáš that gets me past this issue.

On Fri, Dec 18, 2009 at 9:00 PM, Lukas Cenovsky <cenovsky at bakalari.cz>wrote:

> Hi,
> 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
> locals")
>             # 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áš
>
> 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 listUsers at lists.ironpython.comhttp://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
>
>


-- 
Regards,

Simon Segal
MCSD, MCDBA, MCSE, MCTS - Biztalk

Mobile: 0414854913
Email: simon.segal at simonsegal.net
Web Site: http://www.simonsegal.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20091218/1d4fad3f/attachment.html>


More information about the Ironpython-users mailing list