C#equivalente a la matriz asociativa php
web-services associative-array (3)
Estoy personalizando una aplicación de carrito de compras en php. en esta aplicación, tengo que integrar una parte con otra aplicación C # .net, así que estoy usando webservice en php shoppnig cart. En uno de los métodos del servicio web, algunos valores deben pasar como una matriz asociativa como esta.
$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));
en php funciona bien ... pero el problema es que estoy luchando con C # .net, ¿cómo puedo pasar array asociativo con C # .net? Soy un programador de php, creo que no hay una matriz asociativa en C # .net y alguien dijo que C # Dictionary puede usar en lugar de eso, pero eso no funciona con la llamada al servicio web
El código C # es
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 });
alguien puede dar un consejo?
Creo que quieres un Dictionary<string, int>
. Pero podría estar equivocado. Debería ver qué clase generada se usa cuando llama al servicio web.
Para llamar al servicio web, haga clic con el botón derecho en la carpeta Referencias de su proyecto. Diga Agregar referencia de servicio.
Coloque la url WSDL allí y deje que genere las clases para usted.
Intenta usar un Hashtable
http://msdn.microsoft.com/en-au/library/system.collections.hashtable%28v=vs.80%29.aspx
Supongo que la razón por la que el diccionario no funciona con la llamada al servicio web es que el diccionario no es serializable. Pruebe un SerializableDictionary en su lugar; hay una implementación aquí:
http://www.dacris.com/blog/2010/07/31/c-serializable-dictionary-a-working-example/