我试图用几种不同的形式做到这一点,这只是最新的。我经常笨拙几个小时,从来没有到过任何地方,所以我想用现实世界的例子来提出这个问题。
我有Web服务,我从中编写XML,以便人们可以从我们的服务器中提取信息,所以我有:
(namespace)
public static class WebServices
{
public static void WriteXML(this WebService svc, DataSet results)
{
if (results != null)
HttpContext.Current.Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><xsl:stylesheet version=\"1.0\" " +
"xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns=\"http://www.w3.org/1999/xhtml\">" + results.GetXml() + "</xsl:stylesheet>");
}
}
不幸的是,这只是可以访问:
using (namespace)
....
this.WriteXML(DataSet);
我想要的时候
using (namespace)
....
WriteXML(DataSet);
我错过了什么?
答案 0 :(得分:1)
您为WebService
编写了一个扩展方法 - 您的第一个参数是this WebService svc
,这反过来意味着您的扩展方法WriteXML
只能在WebService
的实例上调用
答案 1 :(得分:0)
如果它是一个部分类,你可以添加一个方法,但在MSDN文档中,它并没有说它是偏的。您必须使用扩展方法对其进行扩展,并且必须使用this
关键字来访问它。五个额外的角色对我来说似乎并不太糟糕。还有其他原因导致您不想使用关键字吗?
答案 2 :(得分:0)
您可以将该方法放入基类,然后从基类派生所有Web服务。基类将派生自WebService。
除非你使用WebService
类的成员,否则你根本不需要从中派生出来。您可以使用[WebService]
简单地装饰您的Web服务类。