I am new with C#, I have this error with my class.
Extension method must be defined in a non-generic static class
I just searched and found many reasons that could make this error..such as adding static to class name and other..Can you help me find why this error comes for class?
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace LandManagment
{
    class  weather
    {
     private string xml;
     private string FullTextXML;   
     private string PartTextXML;  
     public List<Forcast> forcastlist;
     public Wind wind;
     public Astronomy astronomy;
     public Atmosphere atmosphere;
     public Condition condition;
     public struct Forcast
            {
         public Forcast(string day, string date, string low, string high, string text, string code)
                {
                    Day = day;
                    Date = date;
                    Low = low;
                    High = high;
                    Text = text;
                    Code = code;
                }
                public string Day { get; private set; }
                public string Date { get; private set; }
                public string Low { get; private set; }
                public string High { get; private set; }
                public string Text { get; private set; }
                public string Code { get; private set; }
            }
     public struct Wind
     {
         public Wind(string chill, string direction, string speed)
         {
             Chill = chill;
             Direction = direction;
             Speed = speed;
         }
         public string Chill { get; private set; }
         public string Direction { get; private set; }
         public string Speed { get; private set; }
     }
     public struct Astronomy
     {
         public Astronomy(string sunrise, string sunset)
         {
             Sunrise = sunrise;
             Sunset = sunset;
         }
         public string Sunrise { get; private set; }
         public string Sunset { get; private set; }
     }
     public struct Atmosphere
     {
         public Atmosphere(string humidity, string visibility, string pressure, string rising)
         {
             Humidity = humidity;
             Visibility = visibility;
             Pressure = pressure;
             Rising = rising;
         }
         public string Humidity { get; private set; }
         public string Visibility { get; private set; }
         public string Pressure { get; private set; }
         public string Rising { get; private set; }
     }
     public struct Condition
     {
         public Condition(string text, string code, string temp)
         {
             Text = text;
             Code = code;
             Temp = temp;
         }
         public string Text { get; private set; }
         public string Code { get; private set; }
         public string Temp { get; private set; }
     }
     private string GetStr(string str) {
         try {
             int index1;
             int index2;
             index1 = (str.IndexOf("<![CDATA[") + "<![CDATA[".Length);
             index2 = str.IndexOf("]]>");
             string str1 = str.Substring(index1, (index2 - index1));
             // MsgBox(str1)
             return str1;
         }
         catch (Exception ex) {
             return "Error";
         }
     }
    private string getXML() {
         return FullTextXML;
     }
      private void GetWind() {
         int index1;
         int index2;
         string NewString;
         index1 = (PartTextXML.IndexOf("<yweather:wind") + "<yweather:wind".Length);
         NewString = PartTextXML.Substring(index1);
         index2 = NewString.IndexOf("/>");
         string TodayWind= NewString.Substring(0, index2).ToLower();
         //speed
         index1 = TodayWind.IndexOf("speed");
         string NewStr = TodayWind.Substring(index1);
         index2 = NewStr.IndexOf(" ");
         string ss = NewStr.Substring(0, index2);
         string[] arr = ss.Split('=');
         string speed = FormatString(arr[1].Replace("\"", ""));
         //direction
         index1 = TodayWind.IndexOf("direction");
         NewStr = TodayWind.Substring(index1);
         index2 = NewStr.IndexOf(" ");
         ss = NewStr.Substring(0, index2);
         arr = ss.Split('=');
         string direction = FormatString(arr[1].Replace("\"", ""));
         //chill
         index1 = TodayWind.IndexOf("chill");
         NewStr = TodayWind.Substring(index1);
         index2 = NewStr.IndexOf(" ");
         ss = NewStr.Substring(0, index2);
         arr = ss.Split('=');
         string chill = FormatString(arr[1].Replace("\"", ""));
         wind = new Wind(speed, direction, chill);
     }
      public void GetAstronomy() {
         int index1;
         int index2;
         string NewString;
         index1 = (PartTextXML.IndexOf("<yweather:astronomy") + "<yweather:astronomy".Length);
         NewString = PartTextXML.Substring(index1);
         index2 = NewString.IndexOf("/>");
         String TodayAstronomy = NewString.Substring(0, index2).ToLower();
         //sunrise
         index1 = TodayAstronomy.IndexOf("sunrise");
         string NewStr = TodayAstronomy.Substring(index1);
         index2 = NewStr.IndexOf(" am");
         string ss = NewStr.Substring(0, index2);
         string[] arr = ss.Split('=');
         String sunrise = (FormatString(arr[1].Replace("\"", "")) + "am");
         //sunset
         index1 = TodayAstronomy.IndexOf("sunset");
         NewStr = TodayAstronomy.Substring(index1);
         index2 = NewStr.IndexOf(" pm");
         ss = NewStr.Substring(0, index2);
         arr = ss.Split('=');
         String sunset = (FormatString(arr[1].Replace("\"", "")) + "pm");
         astronomy = new Astronomy(sunrise, sunset);
     }
      private void GetAtmosphere()
    {
        int index1;
        int index2;
        string NewString;
        index1 = (PartTextXML.IndexOf("<yweather:atmosphere") + "<yweather:atmosphere".Length);
        NewString = PartTextXML.Substring(index1);
        index2 = NewString.IndexOf("/>");
        string TodayAtmosphere = NewString.Substring(0, index2).ToLower();
        //humidity
        index1 = TodayAtmosphere.IndexOf("humidity");
        string NewStr = TodayAtmosphere.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        string ss = NewStr.Substring(0, index2);
        string[] arr = ss.Split('=');
        string humidity = FormatString(arr[1].Replace("\"", ""));
        //visibility
        index1 = TodayAtmosphere.IndexOf("visibility");
        NewStr = TodayAtmosphere.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        ss = NewStr.Substring(0, index2);
        arr = ss.Split('=');
        string visibility = FormatString(arr[1].Replace("\"", ""));
        //pressure
        index1 = TodayAtmosphere.IndexOf("pressure");
        NewStr = TodayAtmosphere.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        ss = NewStr.Substring(0, index2);
        arr = ss.Split('=');
        string pressure = FormatString(arr[1].Replace("\"", ""));
        //rising
        index1 = TodayAtmosphere.IndexOf("rising");
        NewStr = TodayAtmosphere.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        ss = NewStr.Substring(0, index2);
        arr = ss.Split('=');
        string rising = FormatString(arr[1].Replace("\"", ""));
        atmosphere = new Atmosphere(humidity, visibility, pressure, rising);
    }
      private void GetCondition()
    {
        int index1;
        int index2;
        string NewString;
        index1 = (PartTextXML.IndexOf("<yweather:condition") + "<yweather:condition".Length);
        NewString = PartTextXML.Substring(index1);
        index2 = NewString.IndexOf("/>");
        String TodayCondition = NewString.Substring(0, index2).ToLower();
        //temp
        index1 = TodayCondition.IndexOf("temp");
        string NewStr = TodayCondition.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        string ss = NewStr.Substring(0, index2);
        string[] arr = ss.Split('=');
        string temp = FormatString(arr[1].Replace("\"", ""));
        //code
        index1 = TodayCondition.IndexOf("code");
        NewStr = TodayCondition.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        ss = NewStr.Substring(0, index2);
        arr = ss.Split('=');
        string code = FormatString(arr[1].Replace("\"", ""));
        //text
        index1 = TodayCondition.IndexOf("text");
        NewStr = TodayCondition.Substring(index1);
        index2 = NewStr.IndexOf(" ");
        ss = NewStr.Substring(0, index2);
        arr = ss.Split('=');
        string text = FormatString(arr[1].Replace("\"", ""));
        condition = new Condition(text, code, temp);
    }
      public void GetForecast()
    {
        for (int i = 0; i < 2; i++)
        {
            int index1;
            int index2;
            string NewString;
            index1 = (NthIndexOf(PartTextXML, "<yweather:astronomy", i+1) + "<yweather:astronomy".Length);
            NewString = PartTextXML.Substring(index1);
            index2 = NewString.IndexOf("/>");
            string forc=NewString.Substring(0, index2).ToLower();
            //low
            index1 = forc.IndexOf("low");
            string NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            string ss = NewStr.Substring(0, index2);
            string[] arr = ss.Split('=');
            String Low = arr[1].Replace("\"", "");
            //high
            index1 = forc.IndexOf("high");
            NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            ss = NewStr.Substring(0, index2);
            arr = ss.Split('=');
            String High = arr[1].Replace("\"", "");
             //text
            index1 = forc.IndexOf("text");
            NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            ss = NewStr.Substring(0, index2);
            arr = ss.Split('=');
            String text = arr[1].Replace("\"", "");
            //text
            index1 = forc.IndexOf("code");
            NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            ss = NewStr.Substring(0, index2);
            arr = ss.Split('=');
            String code = arr[1].Replace("\"", "");
             //day
            index1 = forc.IndexOf("day");
            NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            ss = NewStr.Substring(0, index2);
            arr = ss.Split('=');
            String day = arr[1].Replace("\"", "");
            //date
            index1 = forc.IndexOf("date");
            NewStr = forc.Substring(index1);
            index2 = NewStr.IndexOf(" ");
            ss = NewStr.Substring(0, index2);
            arr = ss.Split('=');
            String date = arr[1].Replace("\"", "");
            forcastlist.Insert(i,new Forcast(day,date,Low,High,text,code)); 
        }
    }
      private static int NthIndexOf(this string target, string value, int n)
    {
        Match m = Regex.Match(target, "((" + value + ").*?){" + n + "}");
        if (m.Success)
            return m.Groups[2].Captures[n - 1].Index;
        else
            return -1;
    }
      public weather(string w, string U) {
         System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
         string str = ("http://xml.weather.yahoo.com/forecastrss?w=" 
                     + (w + ("&u=" + U)));
         try {
             // Load data   
             doc.Load(str);
             str = doc.OuterXml;
             FullTextXML = doc.OuterXml;
             PartTextXML = GetStr(str);
             this.GetAstronomy();
             this.GetAtmosphere();
             this.GetCondition();
             this.GetForecast();
         }
         catch (Exception ex) {
             str = "null";
             FullTextXML = "null";
             throw new Exception("Null XML");
         }
     }
     private string FormatString(String  sss) {
         char c = sss[0];
         c = c.ToString().ToUpper()[0];
         string str="";
         str = (c + sss.Substring(1));
         return str;
     }
    }
}
I tried to change public static class as Extension methods must be defined in a non-generic static class said but got error :(
thanks for your help
 
     
     
     
     
    