C# equivalent to php associative array

僤鯓⒐⒋嵵緔 提交于 2019-11-26 21:50:18

问题


I'm customizing a shopping cart application in php. In this application, I have to integrate some parts with another C#.net application, so I'm using a webservice in a php shopping cart. In one method of the webservice, some values should pass as an associative array like this:

$proxy = new SoapClient('www.mywebservice.com?wsdl');
$associative_array= array(
    'abc'=> 1,'def'=>0,'ghi'=>1,'jkl'=>0
    );

$proxy->call($sessionId, 'methodname', array('somevalue', $associative_array));

In php its working fine... but the problem is that I'm struggling with C#.net, how can I pass an associative array with C#.net? I'm a php programmer, I think there's no associative array in C#.net and somebody said that C# Dictionary can be used instead of that, but that's not working with the webservice call.

C# code is:

Dictionary<string,string> map=new Dictionary<string,string>();
map.Add("abc","1");
map.Add("def","0");
object st = mgs.call(sessionid, "methodname", new object[] { "somevalue",map  });

Can anybody give some advice???


回答1:


I think you want a Dictionary<string, int>. But I could be wrong. You should see what the generated class is used when you call the web service.

To call the web service, right click the References folder of your project. Say Add Service Reference.

Put the WSDL url in there and let it generate the classes for you.




回答2:


Try to use a Hashtable

http://msdn.microsoft.com/en-au/library/system.collections.hashtable%28v=vs.80%29.aspx




回答3:


My guess is that the reason the Dictionary isn't working with the web service call is that Dictionary isn't serializable. Try a SerializableDictionary instead; there's an implementation here:

http://www.dacris.com/blog/2010/07/31/c-serializable-dictionary-a-working-example/



来源:https://stackoverflow.com/questions/9703937/c-sharp-equivalent-to-php-associative-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!