Вызов статического метода в C # - PullRequest
9 голосов
/ 17 октября 2011

Как мне вызвать статический метод? Я хочу назвать это из класса, который я создал, я хочу получить местоположение по IP. Я объявил это, но мне нужно вызвать метод ... as static ...

Если честно, я совершенно запутался, нужно ли создавать экземпляры address, city и т. Д .?

Я уже сделал это;

LocationTools.cs

public static class LocationTools
    {
        public static void GetLocationFromIP(string address, out string city, out string region, out string country, out double? latitude, out double? longitude)
        {

Home.cs

   public string IPAPIKey
    {
       get
        {
            return WebConfigurationManager.AppSettings["IPAPIKey"];
        }
    }

    ////To get the ip address of the machine and not the proxy use the following code
    static void GetLocationFromIP()
    {
        string strIPAddress = Request.UserHostAddress.ToString();
        strIPAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (strIPAddress == null || strIPAddress == "")
        {
            strIPAddress = Request.ServerVariables["REMOTE_ADDR"].ToString();
        }
    }
}

}

Ответы [ 5 ]

6 голосов
/ 17 октября 2011

Статические классы обычно используются, когда вы хотите предоставить некоторые утилиты, поэтому вам не нужно создавать объекты этих классов.Вы можете вызывать эти методы из других классов, просто вызывая по имени класса и вызывая функцию-член.

Например, здесь вы можете вызвать метод LocationTools.GetLocationFromIP ();

Надеюсь, это поможет!

5 голосов
/ 17 октября 2011

Вот и все

static void GetLocationFromIP()
{
    string strIPAddress = Request.UserHostAddress.ToString();
    strIPAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (strIPAddress == null || strIPAddress == "")
    {
        strIPAddress = Request.ServerVariables["REMOTE_ADDR"].ToString();
    }

    string city = string.Empty;
    string region = string.Empty;
    string country = string.Empty;
    double latitude = -1.00;
    double longitude = -1.00;

    LocationTools.GetLocationFromIP(strIPAddress, out city, out region, out country, out latitude, out longitude)
}
2 голосов
/ 17 октября 2011
LocationTools.GetLocationFromIP( ... ) ;

Вы должны прочитать о статических классах и членах на MSDN

Статические классы и члены класса используются для создания данных и функций, к которым можно обращаться без создания экземпляра класса. Статические члены класса могут использоваться для разделения данных и поведения, которое не зависит от какой-либо идентичности объекта: данные и функции не изменяются независимо от того, что происходит с объектом. Статические классы могут использоваться, когда в классе нет данных или поведения, которое зависит от идентичности объекта.

1 голос
/ 17 октября 2011

Это так же просто, как:

LocationTools.GetLocationFromIP(strIP, strCity, strRegion, strCountry, fLat, fLong)

Просто вызовите класс, и прямо из этого метода.Статический означает, что вам не нужен экземпляр класса для вызова метода.

1 голос
/ 17 октября 2011

Вам нужно сделать две вещи:

  1. Сначала импортируйте библиотеку, в которой находится статический класс: import blabla;

  2. Затем,вызовите ваш статический метод, сделав что-то вроде этого: LocationTools.GetLocationFromIP (address, city ...);

Это должно работать.

...