【发布时间】:2012-03-13 22:14:24
【问题描述】:
我想从 WebMethod 返回一个 ExpandoObject,如下所示:
[WebMethod]
public ExpandoObject TestMethod(int val)
{
dynamic item = new ExpandoObject();
item.Value = val;
item.SomeOtherStuff = "SomeOtherStuff";
DynamicallyAddMoreFields(item);
return item;
}
当我尝试这样做时,我得到了这个错误:
要实现 XML 可序列化,从 IEnumerable 继承的类型必须具有 Add(System.Object) 的实现
我不能扩展 ExpandoObject 类,因为它是密封的。
是否可以通过其他方式做到这一点?
【问题讨论】:
-
如果某个 java 客户端想要使用你的方法怎么办?您应该始终返回众所周知的类型。 --编辑:Web 服务是客户端和服务器之间的合同。这里的合同是什么,你还给客户什么?一个可以包含任何内容的 ExpandoObject。
-
@L.B 在这种特定情况下,这不是问题,因为客户将读取结果 XML,该结果将始终具有基于已知参数的相同结构,并且此 WS 仅供公司内部使用。
标签: c# web-services dynamic asmx