I had tried the IList<double>, and it works fine if I send in a list that is 
full of doubles,
Using something like mylist = map(float,range(10))

That was an awkwardness I wanted to avoid.  I wanted to be able to pass in 
mylist = range(10) just as easily.
My C# routine will accept the argument as an IList (no type), but I'm unable to 
cast it afterwards.  
I finally solved the problem by accepting an IList, copying it element my 
element to a new list of the correct type. If a typecast is required, I assign 
it to a temporary variable of the same type first, then cast the temporary 
variable.

This is the function I use for my conversion of each element.  I settled on 
using the IronPython.Runtime.List instead of IList because that's what I'm 
really passing in, but they seem to act exactly the same in this context. 

        static private double pToDouble(IronPython.Runtime.List pList, int 
index)
        {
            string type = pList[index].GetType().FullName;

            if (type == "System.Int32")
            {
                int tmp = (int)pList[index];
                return (double)tmp;
            }
            else if (type == "System.Double")
            {
                return (double)pList[index];

            }
            else
                throw (new ApplicationException("Can't convert Python list to 
Double"));
        }

It's a little clumsy, but I'd rather push this down into the C# where I can 
hide it from my Python users.

Mark Senko

-----Original Message-----
From: users-boun...@lists.ironpython.com 
[mailto:users-boun...@lists.ironpython.com] On Behalf Of Jeff Hardy
Sent: Tuesday, December 28, 2010 10:56 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Passing arguments to C#

On Tue, Dec 28, 2010 at 3:33 PM, Mark Senko <mse...@completegenomics.com> wrote:
> Public static void TestIt(IList inList) and public static void
> TestIt(IronPython.runtime.List inList).  They both act pretty much the same.
> I've also tried using tuples.
>

Have you tried using IList<double> or IEnumerable<double> as
arguments? IronPython should then handle the conversion for you.

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



____ 
 
The contents of this e-mail and any attachments are confidential and only for 
use by the intended recipient. Any unauthorized use, distribution or copying 
of this message is strictly prohibited. If you are not the intended recipient 
please inform the sender immediately by reply e-mail and delete this message 
from your system. Thank you for your co-operation.
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to