我一直在尝试使用SilverLight客户端来调用将返回的ASP.Net WCF服务Dictionary<string, object>
.当字典中的值是简单类型时,这很好用int
,string
或者Guid
.
但是,我现在有一个场景,我需要其中一个值为数组Dictionary<string, object>
!这一切都编译得很好,服务的签名没有改变,但服务调用现在失败了.
任何想法如何解决它?我试图用KnownType
和ServiceKnownType
属性来注释我的服务类和方法,但这不起作用.
这是一段代码:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
[ServiceKnownType(typeof(Dictionary<string, object>))]
public Dictionary<string, object> GetObject()
{
return new Dictionary<string, object>()
{
{ "pty1", 1 },
{ "pty2", Guid.NewGuid() },
{ "pty3", "blah" },
{ "pty4", new Dictionary<string, object>[]
{
new Dictionary<string, object>()
{
{ "pty1", 4 },
{ "pty2", Guid.NewGuid() },
{ "pty3", "blah" },
}
, …
Run Code Online (Sandbox Code Playgroud)