C# 使用扩展方法代替C中的内置方法#
有些内置方法不适用于我,我的应用程序使用的是旧版本的.NetFramework,它没有一些新方法。因此,我正在尝试创建覆盖内置方法的扩展方法。但我在工作中遇到了一些问题。代码如下:C# 使用扩展方法代替C中的内置方法#,c#,C#,有些内置方法不适用于我,我的应用程序使用的是旧版本的.NetFramework,它没有一些新方法。因此,我正在尝试创建覆盖内置方法的扩展方法。但我在工作中遇到了一些问题。代码如下: using System; using System.IO; using System.Net; using System.Xml; using System.Text; using System.Collections.Generic; namespace API{ public static class
using System;
using System.IO;
using System.Net;
using System.Xml;
using System.Text;
using System.Collections.Generic;
namespace API{
public static class Retrive
{
// some variables
public static void CopyTo(this Stream input, Stream output)///Extension method
{
byte[] buffer = new byte[32768];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write (buffer, 0, read);
}
}
public static void Main ()
{
string url = "https://";
string baseURL = "";
string authenticateStr = "";
try
{
///
}
catch (WebException e)
{
using (WebResponse response = e.Response)
{
////
}
}
} // end main()
} // end class
}//结束名称空间
我得到的错误是
1) 扩展方法必须在顶级静态类中定义;
“Retrive”是一个嵌套类
我不明白为什么“检索”类会嵌套
2) 扩展方法必须在非泛型静态类中定义
如何解决这些问题?请帮帮我
谢谢。尝试在任何其他类中保留“static void Main()”。我的意思是,除了您尝试用于创建扩展的方法之外。看起来您的主要方法也在Retriev类中。我建议为extensions方法创建一个单独的类,如下所示:
public static class ExtMethods
{
public static void CopyTo(this Stream input, Stream output)///Extension method
{
byte[] buffer = new byte[32768];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write (buffer, 0, read);
}
}
}
非泛型静态类表示您正在创建一个不使用模板的类 e、 列表是泛型类,但MemoryStream或许多类不是泛型类
嵌套类的答案已经在这个线程中给出了。我感觉我们缺少了代码文件的一部分。对吗?您正在定义名称空间吗?为什么要将主函数从程序移到检索?程序类真的被删除了吗?我无法重现你的问题。由于“responseText=sr.ReadToEnd();”和“List uriList=new List();”之间的类型(字符“s”),代码无法编译。其次,并非所有名称空间都是完整的,因为列表应使用namespace System.Collection.Generic。第三,并非所有变量都声明为“url”和“baseURL”.Andi如果我没有弄错您的扩展,因为它具有与我不需要定义的指令和名称空间相同的签名,那么当我在应用程序中编译代码时,代码将使用所需的指令和名称空间进行修饰。因此,我错过了名称空间。现在我将名称空间添加到代码中。根据您报告的错误,似乎我们没有查看您的全部代码。我看不到任何其他方法来获取您看到的错误。是的,建议将它们分开,但由于Main和CopyTo可以在同一个静态类中共存,这不是问题的答案。是的,建议将它们分开,但因为Main和CopyTo可以在同一个st中共存同学们,这不是问题的答案。