2011-10-17 9 views
7

Jak wywołać metodę statyczną? Chcę to nazwać z klasy, którą stworzyłem, chcę uzyskać lokalizację z IP. Mam ogłosił go jednak to, co trzeba zrobić, to wywołać metodę ... jak static ...Wywołanie metody statycznej w języku C#

Aby być z tobą szczery, jestem bardzo mylić tutaj, muszę instancję address, city, etc .?

Zrobiłem to do tej pory;

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(); 
     } 
    } 
} 

}

+2

co spróbowałeś? po prostu użyj LocationTools.GetLocationFromIP (...); –

Odpowiedz

4

Nie idziesz

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) 
} 
1

trzeba zrobić dwie rzeczy:

  1. Najpierw zaimportuj bibliotekę, w której jest klasa statyczna: import blabla;

  2. Następnie wywołaj statyczną metodę, wykonując coś podobnego: LocationTools.GetLocationFromIP (adres, miasto ...);

Powinno działać.

1

To tak proste, jak:

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

Wystarczy zadzwonić klasę, a prosto z tej metody. Statyczny oznacza, że ​​nie potrzebujesz instancji klasy, aby wywołać metodę.

+0

Nie są zmiennymi wejściowymi. –

+0

Nie widziałem ich ... To jest lepsze :)? – Hidde

2
LocationTools.GetLocationFromIP(...) ; 

Należy przeczytać o statycznych klas i posłów na MSDN

klas statycznych i członkowie klasy są wykorzystywane do tworzenia danych i funkcji, które mogą być dostępne bez tworzenia instancji klasy. Statyczne klasy klasy mogą być używane do oddzielania danych i zachowań niezależnych od tożsamości obiektu: dane i funkcje nie zmieniają się niezależnie od tego, co dzieje się z obiektem. Klasy statyczne mogą być używane, gdy w klasie nie ma danych ani zachowań zależnych od tożsamości obiektu.

5

Klasy statyczne są na ogół używane, gdy chcesz dostarczyć pewne narzędzia, więc nie musisz tworzyć obiektów z tych klas. Możesz wywołać te metody z innych klas, po prostu wywołując nazwę klasy i wywołując funkcję członka.

Na przykład tutaj możesz zadzwonić jako LocationTools.GetLocationFromIP();

Mam nadzieję, że pomoże!

Powiązane problemy