C # эквивалент php ассоциативного массива - PullRequest
6 голосов
/ 14 марта 2012

Я настраиваю приложение корзины в php. в этом приложении я должен интегрировать какую-то часть с другим приложением C # .net, поэтому я использую веб-сервис в php shoppnig cart. В одном из методов веб-сервиса некоторые значения должны передаваться в виде ассоциативного массива, подобного этому.

   $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));

в PHP работает нормально ... но проблема в том, что я борюсь с C # .net, как я могу передать ассоциативный массив с C # .net? Я программист php. Я думаю, что в C # нет ассоциативного массива, и кто-то сказал, что C # Dictionary может использовать вместо этого, Но это не работает с вызовом веб-службы

C # код

   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  });

Кто-нибудь может дать совет ???

Ответы [ 3 ]

2 голосов
/ 14 марта 2012

Я думаю, вы хотите Dictionary<string, int>. Но я могу ошибаться. При вызове веб-службы вы должны увидеть, какой сгенерированный класс используется.

Чтобы вызвать веб-службу, щелкните правой кнопкой мыши папку «Ссылки» вашего проекта. Скажите Добавить сервисную ссылку.

Поместите туда URL WSDL и дайте ему сгенерировать классы для вас.

0 голосов
/ 22 октября 2013

Я предполагаю, что причина, по которой словарь не работает с вызовом веб-службы, заключается в том, что словарь не сериализуем. Вместо этого попробуйте SerializableDictionary; здесь есть реализация:

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

0 голосов
/ 15 марта 2012
...