-1

我使用了一个代码但得到一个错误,即
扩展方法必须在顶级静态类中定义;StringHelpers是一个嵌套类

namespace Figreplace2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FileInfo n = new FileInfo(textBox1.Text);

            StringBuilder newFile = new StringBuilder();

            string temp = " ";

            string[] file = File.ReadAllLines(textBox1.Text);
        }

    public static class StringHelpers
    {
        public static string Replace(this string s)
        {
            Dictionary<string, string> replacements = new Dictionary<string, string>();

            //replacements.Add("ID1", "NewValue");
            replacements.Add("ID2", "NewValue2");
            // ... further replacement entries ...

            foreach (string line in file)
            {
                bool replacementMade = false;
                foreach (var replacement in replacements)
                {
                    if (line.StartsWith(replacement.Key))
                    {
                        string newString = s;
                        temp = line.Replace(string.Format("{0}   :{1}", replacement.Key, replacement.Value));

                        newFile.Append(temp + "\r\n");

                        continue;
                        return newString;
                    }
                    newFile.Append(line + "\r\n");

                    replacementMade = true;

                  //  break;

                }
                if (!replacementMade)
                {
                    File.WriteAllText(@"D:\madhu\test2\23.txt", newFile.ToString());
                }

            }
        }



    }
}
4

3 回答 3

1

错误消息非常清楚:您需要将声明StringHelpers移出Form1类(很可能在新文件中StringHelpers.cs)。

注意:“嵌套”类是另一个类“内部”的类,不允许用于扩展方法。

于 2013-09-11T11:13:11.867 回答
1

正如错误消息所示:“扩展方法必须在顶级静态类中定义;StringHelpers 是一个嵌套类Form1.

namespace Figreplace2
{  
    public partial class Form1 : Form
    {
        // get it out of this class
    }

    public static class StringHelpers
    {
        public static string Replace(this string s)
        {
            // ...
        }
    }
}
于 2013-09-11T11:13:58.250 回答
1

你的整个StringHelpers Replace方法都搞砸了。

什么是file, temp, newFile?

它们被使用但未定义

于 2013-09-11T11:15:36.110 回答