[IronPython] __clrtype__ and generics
Lukas Cenovsky
cenovsky at bakalari.cz
Fri Dec 18 11:00:53 CET 2009
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á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