Thanks, Michael, that will work.<br><br>It seems blindingly obvious now, but I hadn&#39;t even considered it, since I generally try to pass CLR types to CLR methods.<br><br>Sheepishly,<br>Eric<br><br><div><span class="gmail_quote">
On 7/30/07, <b class="gmail_sendername">Michael Foord</b> &lt;<a href="mailto:fuzzyman@voidspace.org.uk">fuzzyman@voidspace.org.uk</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello Eric,<br><br>Interestingly it works with:<br>pc = ParamCall((&#39;a&#39;, &#39;b&#39;, &#39;c&#39;))<br><br>passing a tuple instead of an array.<br><br>Still looks like a bug.<br><br>Michael<br><a href="http://www.ironpython.info/">
http://www.ironpython.info/</a><br><br>Eric Rochester wrote:<br>&gt; Hi,<br>&gt;<br>&gt; I&#39;ve been using IronPython for a few months now, and I&#39;m really<br>&gt; enjoying it. Thanks for all the hard work that&#39;s gone into it.
<br>&gt;<br>&gt; I recently ran across an issue, and I wondered if anyone else has seen<br>&gt; it. I think it&#39;s probably a bug, but I couldn&#39;t find a bug report,<br>&gt; either.<br>&gt;<br>&gt; Basically, if there is a CLR class that takes an array as its only
<br>&gt; constructor argument, IronPython always tries to call it using params.<br>&gt; For example, if I compile this to ParamCall.dll:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // ParamCall.cs<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; using System;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; namespace ParamCall
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class ParamCall<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string[] args;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public ParamCall(string[] args)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
this.args = args;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Joined()<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return String.Join(&quot;,&quot;, args);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;<br>&gt; And I call it using this script:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; # paramcall.py<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; import clr<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; clr.AddReference(&#39;ParamCall&#39;)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; from ParamCall import ParamCall
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; from System import Array<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; args = Array[str]( [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] )<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;args =&#39;, args<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;creating ParamCall object:&#39;
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; pc = ParamCall(args)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;pc.Joined() =&gt;&#39;, pc.Joined()<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; print<br>&gt;<br>&gt;<br>&gt; I get these results.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; C:\home\eric\src\ase\Lse.Net&gt;IronPython\ipy 
paramcall.py<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; args = System.String[](&#39;a&#39;, &#39;b&#39;, &#39;c&#39;)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; creating ParamCall object:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Traceback (most recent call last):<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File C:\home\eric\src\ase\Lse.Net\paramcall.py, line 7, in
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Initialize<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File , line 0, in __import__##4<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File C:\home\eric\src\ase\Lse.Net\ParamCall.py, line 15, in<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Initialize<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File , line 0, in NonDefaultNew##54<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; TypeError: ParamCall() takes exactly 1 argument (3 given)
<br>&gt;<br>&gt;<br>&gt; I have also tried wrapping the arguments in a tuple and calling it<br>&gt; like ParamCall( *(args,) ), but the results are the same.<br>&gt;<br>&gt; If anyone has any suggestions for work-arounds or clues as to what I&#39;m
<br>&gt; doing wrong, I&#39;d be glad to hear them.<br>&gt;<br>&gt; Thanks,<br>&gt;<br>&gt; --<br>&gt; Eric Rochester<br>&gt;<br>&gt; ------------------------------------------------------------------------<br>&gt;<br>&gt; _______________________________________________
<br>&gt; Users mailing list<br>&gt; <a href="mailto:Users@lists.ironpython.com">Users@lists.ironpython.com</a><br>&gt; <a href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com">http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
</a><br>&gt;<br><br>_______________________________________________<br>Users mailing list<br><a href="mailto:Users@lists.ironpython.com">Users@lists.ironpython.com</a><br><a href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com">
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com</a><br></blockquote></div><br><br clear="all"><br>-- <br>Eric Rochester<br><a href="http://writingcoding.blogspot.com/">http://writingcoding.blogspot.com/</a><br>
<a href="http://www.linkedin.com/in/erochester">http://www.linkedin.com/in/erochester</a>