C# 在SOAP信封中创建新词典

C# 在SOAP信封中创建新词典,c#,wcf,soap,C#,Wcf,Soap,这是一个相当基本的问题,但我似乎在任何地方都找不到答案 如何在SOAP中指定字典的新实例?基本上,我有这个信封(为可读性而写的信封顶级标签): 密码 用户名 RequestInfo是有问题的属性,但它总是null。我假设信封中的属性只会被反序列化到一个空的字典中,但事实并非如此。正如@flem所说,DataContractSerializer可能会提供回答这个问题所需的线索。序列化空字典会生成以下XML。在RequestInfo元素中尝试一下,看看它是否有效(我自己还没有测试过) 传统上

这是一个相当基本的问题,但我似乎在任何地方都找不到答案

如何在SOAP中指定
字典的新实例?基本上,我有这个信封(为可读性而写的信封顶级标签):


密码
用户名


RequestInfo
是有问题的属性,但它总是
null
。我假设信封中的属性只会被反序列化到一个空的
字典中
,但事实并非如此。

正如@flem所说,DataContractSerializer可能会提供回答这个问题所需的线索。序列化空字典会生成以下XML。在RequestInfo元素中尝试一下,看看它是否有效(我自己还没有测试过)



传统上,字典不能在.NET中序列化。也就是说,DataContractSerializer可以毫无问题地处理这个问题。我怀疑你的问题不是序列化程序。你为什么认为它会被反序列化为字典?它在模式中是如何定义的?您是否尝试使用服务引用?在这种情况下,生成的属性是什么类型的?选民是否愿意发表评论?如果它不起作用,那么我会相应地更新答案。
<soapenv:Body>
   <tem:LogInWithCredentials>      
       <tem:Request>             
       <ttf1:Password>password</ttf1:Password>         
       <ttf1:UserName>username</ttf1:UserName>
       <ttf1:RequestInfo></ttf1:RequestInfo>
      </tem:Request>      
   </tem:LogInWithCredentials>
</soapenv:Body>
<ArrayOfKeyValueOfstringstring 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />