我想从一个WebMethod返回ExpandoObject,像这样:是否可以从Web服务调用中返回ExpandoObject?
[WebMethod]
public ExpandoObject TestMethod(int val)
{
dynamic item = new ExpandoObject();
item.Value = val;
item.SomeOtherStuff = "SomeOtherStuff";
DynamicallyAddMoreFields(item);
return item;
}
当我尝试这样做,我得到这个错误:
To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object)
我不能延长ExpandoObject因为它是封闭的。
是否有可能以其他方式做到这一点?
如果某个java客户端想要使用您的方法,那么怎么办?你应该总是返回众所周知的类型。 - EDIT:Webservice是客户端和服务器之间的契约。这里的合同是什么,你返回给客户的是什么?一个可以包含任何东西的ExpandoObject。 – 2012-03-13 14:16:44
@ L.B在这种特殊情况下,它不是一个问题,因为客户端将读取结果XML,它将始终具有基于已知参数的相同结构,并且此WS仅供公司内部使用。 – Meryovi 2012-03-13 14:59:00