title: Extension method must be defined in a non-generic static class
body: <p>I'm getting the above error. I saw other similar posts on this error but I don't seem to find where the problem is. I changed my class type to static and the error resists. This is the entire code to my main form class:</p>
  
  <p>I Edited my class. This is how it looks like now and the error has changed to:Missing partial modifier on declaration of type 'PhoneFind.frmMain'; another partial declaration of this type exists.</p>
  
  <pre><code>namespace PhoneFind
  {
      public partial class frmMain : Form
      {
          // the path to the temporary file to store the webresponse
          String path = "c:\\Temp\\webresponse.txt";
          public frmMain()
          {
              InitializeComponent();
              comboSelectSearchEngine.SelectedIndex = 0;
              ofdPhones.Filter = "txt files (*.txt)|*.txt";
              listbxMessages.Items.Clear();
              addItemToListBox(listbxMessages, "Welcome to ActionBase Phone Find!");
              addItemToListBox(listbxMessages, "Select the file containing the numbers.");
              radioNumbers.Checked = true;
          }
  
          private void frmMain_Load(object sender, EventArgs e)
          {
  
          }
  
          private void btnLoadFile_Click(object sender, EventArgs e)
          {
              if (ofdPhones.ShowDialog() == System.Windows.Forms.DialogResult.OK)
              {
                  txtFile.Text = ofdPhones.FileName;
  
                  // Read the file line by line and add the numbers to the numbers listbox.
                  listbxNumbers.Items.Clear();
                  String line;
                  int numbersCounter = 0;
                  System.IO.StreamReader file = new System.IO.StreamReader(ofdPhones.FileName);
                  while ((line = file.ReadLine()) != null)
                  {
                      listbxNumbers.Items.Add(line.Trim());
                      numbersCounter++;
                  }
                  addItemToListBox(listbxMessages, ofdPhones.FileName + " loaded.");
                  addItemToListBox(listbxMessages, numbersCounter + " records found in the file.");
  
              }
          }
  
          // add item to the listbox and move scroll to the end of the listbox for the latest messages to be visibile to the viewer
          private void addItemToListBox(ListBox listbox, String item)
          {
              listbox.Items.Add(item);
              listbox.SelectedIndex = (listbox.Items.Count - 1);
          }
  
          private void radioNumbers_CheckedChanged(object sender, EventArgs e)
          {
              if (!radioNumbers.Checked)
              {
                  grpbxNumbers.Text = "Names and Addresses";
              }
              else
              {
                  grpbxNumbers.Text = "Numbers";
              }
          }
  
          private void btnRun_Click(object sender, EventArgs e)
          {
              if (listbxNumbers.Items.Count == 0)
              {
                  MessageBox.Show("No records have been loaded." + "\n" + "Use the browse button to load records.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
              }
              else if (!CheckForInternetConnection())
              {
                  MessageBox.Show("No internet connection.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
              }
              else
              {
                  String response;
                  switch (comboSelectSearchEngine.SelectedIndex)
                  {
                      case 0: // Hitta.se
                          foreach (String item in listbxNumbers.Items)
                          {
                              WebRequestObj request = new WebRequestObj(item, "hitta");
                              response = request.sendRequest();
                              if (response.Equals("Error"))
                              {
                                  addItemToListBox(listbxMessages, "Error sending '" + item + "' to the server.");
                              }
                              else
                              {
                                  //create a temporary file to work on the response
                                  StreamWriter sw;
                                  if (!File.Exists(path)) {
                                      sw = File.CreateText(path);
                                  }
                                  try
                                  {
                                      File.WriteAllText(path, String.Empty); // clear the content of the file
                                      sw = File.AppendText(path);
                                      sw.WriteLine(response);
                                      sw.Flush();
                                      sw.Close();
                                      String s = findResultType(path);
                                      MessageBox.Show(s);
                                  }
                                  catch (IOException ioe)
                                  {
                                      MessageBox.Show(ioe.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                  }
  
  
                              }
                          }
                          break;
                  }
              }
          }
  
          public bool CheckForInternetConnection()
          {
              try
              {
                  using (var client = new System.Net.WebClient())
                  using (var stream = client.OpenRead("http://www.google.com"))
                  {
                      return true;
                  }
              }
              catch
              {
                  return false;
              }
          }
  
          /*
           * findResultType
           * gets the web response and finds out if the matching result of the search termis one of the following:
           * 1. one person (oneperson)
           * 2. one company (onecompany)
           * 3. more than one person, no company (manypersonnocompany)
           * 4. no person, more than one company (nopersonmanycompany)
           * 5. more than one person, more than one company (manypersonmanycompany)
           * 6. no person, no company (nopersonnocompany)
           */
          public String findResultType(String reponsepath)
          {                   
              HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
              doc.Load(reponsepath);
              List&lt;String&gt; itemList = new List&lt;String&gt;();
              IEnumerable&lt;String&gt; v = null;
              var item = doc.DocumentNode.SelectNodes("//body[@id='person']");
  
              if (item != null)
              {
                  v = item.Select(p =&gt; p.InnerText);
                  itemList = v.ToList();
                  if (itemList.Count == 1)
                      return "oneperson";
              }
              else
              {
                  item = doc.DocumentNode.SelectNodes("//body[@id='company']");
                  if (item != null)
                  {
                      v = item.Select(p =&gt; p.InnerText);
                      itemList = v.ToList();
                      if (itemList.Count == 1)
                          return "onecompany";
                  }
              }
  
              //for (int i = 0; i &lt; itemList.Count; i++)
              //{
              //    MessageBox.Show(itemList[i]);
              //    //console.writeline(itemlist[i]);
              //}
              //console.writeline(itemlist.count + " results found.");
              return "";
          }
      }
  }
  </code></pre>