我有一个 API,可以返回多种我事先不知道的东西,所以我必须将其设置为返回类型
System.Object
。
我对某些类型有一些问题。就像当它返回不同的对象时它很好,但是当它返回
System.Int32
时,它不起作用并告诉我:
无法序列化“System.Int32”类型的参数,因为它不是方法签名中的确切类型“System.Object”,并且不在已知类型集合中。
有什么想法吗?
我知道我们可以使用 ServiceKnownType 但我想知道是否还有其他方法可以做到这一点?我需要这个中的所有现有类型(int、bool、string 等..)...
不要在服务契约上返回 System.Object 类型,即使它是 WCF 4 REST。默认序列化器/格式化程序如何为您的合约生成响应。
您可以返回字节数组,将 System.Object 转换为字符串并返回它。无论如何,您始终可以将对象序列化为 XML 或 JSON 并作为字符串返回。
还链接到具有相同问题的论坛,也许对您有帮助: http://social.msdn.microsoft.com/Forums/nl-NL/wcf/thread/1f43e9b4-39a4-481b-88f0-18c7d4416745
您可以创建一个简单的 if 语句来检查它是否是 int,然后将其转换为对象。顺便说一句,整数只有成为字符串才能成为对象,所以如果我这样做,我会做一个简单的:
blah.toString();
然后你现在可以将它用作对象了。