Re: MapThread error with NET/Link function
- To: mathgroup at smc.vnet.net
- Subject: [mg85343] Re: MapThread error with NET/Link function
- From: dh <dh at metrohm.ch>
- Date: Thu, 7 Feb 2008 04:38:48 -0500 (EST)
- References: <fo9gkh$slf$1@smc.vnet.net>
Hi Yvon, I do not know why you need to specify arguments. But your syntax is certainly wrong: MapThread[dataSet@SetClusterIds[#1&,#2&],{recordId,clusterIds}] should read: MapThread[dataSet@SetClusterIds[#1,#2]&,{recordId,clusterIds}] hope this helps, Daniel Yvon wrote: > I have created a .NET library (using C#) that I'm using in > Mathematica. I have the following method defined in a Data class: > > public void SetClusterIds(long recordId, int[] clusterId) > > In Mathematica when I do the following, the method works as expected: > > dataSet = NETNew["TestLib.Data"] > ... > > dataSet@SetClusterIds[5577,{1,2,2,2,2,0,0,0,0,0}] > > > If I then have a one dimensional array recordId = {5577,5576,5575} and > a two-dimensional array clusterIds = {{1,2,2,2,2,0,0,0,0,0}, > {1,2,1,2,1,0,0,1,1,2},{1,0,2,2,2,2,2,2,0,0}} in Mathematica and try to > do a MapThread to the .NET method above: > > MapThread[dataSet@SetClusterIds[#1&,#2&],{recordId,clusterIds}] > > I get the following error: > > NET::methodargs: Improper arguments supplied for method named > SetClusterIds. > > {$Failed[5577, {1, 2, 2, 2, 2, 0, 0, 0, 0, 0}], $Failed[ 5576, {1, 2, > 1, 2, 1, 0, 0, 1, 1, 2}], > $Failed[5575, {1, 0, 2, 2, 2, 2, 2, 2, 0, 0}]} > > The $Failed arguments look like what I want for input into the method, > which is puzzling. > > (I've also tried MapThread[dataSet@SetClusterIds, > {recordId,clusterIds}] but the error then says there are not enough > parameters supplied, or something to that effect...) > > Does MapThread not work for NETLink methods? Or does my .NET class > method need to be structured differently to get it to work with > MapThread? > > Thanks in advance for your help! > > Yvon >