【发布时间】:2016-06-22 08:37:46
【问题描述】:
我需要编写一个通用类型的网络方法,因为我将返回字符串或 XmlDocument。有我的代码;
[WebMethod]
public T test<T>()
{
var type = Context.Request.QueryString["type"];
if (type == "json")
{
string result = "";
return result;
}
else
{
XmlDocument result = new XmlDocument();
return result;
}
}
错误是:
无法将字符串转换为 T 或 XmlDocument 转换为 T。
这里有什么错误?
【问题讨论】:
-
编译器事先并不知道你在调用这个方法的时候会给他什么类型。如果你想返回它,你需要一个变量
T result。 -
你可以返回一个对象而不是一个特定的类型。
-
你想做什么?序列化由框架基于配置和 well-known 标头(如
content-type)执行。另一方面,Web 方法定义了众所周知的和已定义的 操作,它们不能是通用的。在这种情况下,他们不需要。如果 request 正确发出,相同的方法可以返回 Json 或 SOAP -
我想要一个返回 json 或 xml 的 web 方法。这个 webmethod 会像 ../..asmx/testmethod?type=json 一样被调用。我该怎么做?任何建议都可以。 @PanagiotisKanavos
-
只需检查框架文档并按照框架 想要的方式进行操作。如果您忽略标准的
Accept: application/json请求标头,客户会非常恼火。否则,您必须创建自定义绑定/序列化程序并配置您的端点以使用它们 - 这就是将您返回的任何内容转换为 JSON 或 SOAP
标签: c# web-services generics asmx webmethod