2009-04-11 46 views
2

我是C#和編程的新手,我的問題是如何調用不同命名空間中的變量?如果我有這個代碼從其他命名空間訪問變量

public void servicevalues(string _servicename) 
{ 
    string servicename = _servicename; 
    string query = string.Format("SELECT * FROM Win32_Service WHERE Name ='{0}'", servicename); 
    ManagementObjectSearcher moquery = new ManagementObjectSearcher(query); 
    ManagementObjectCollection queryCollection = moquery.Get(); 
    foreach (ManagementObject service in queryCollection) 
    { 
    string serviceId = Convert.ToString(service["DisplayName"]); 
    bool serviceResult = Convert.ToBoolean(service["Started"]); 
    } 

我正在傳遞服務名稱如何從另一個名稱空間調用一個或多個變量值?

+0

你應該更多地擴展你的問題,在你的代碼中似乎沒有問題。 – Samuel 2009-04-11 23:00:55

回答

7

通常情況下,變量不會單獨存在於命名空間中,它們存在於可能位於另一個命名空間中的另一個類中。如果您需要訪問另一個類中的變量(在另一個名稱空間中),則其他類需要以某種方式公開變量。通常的做法是對變量使用公共屬性(如果只需要訪問該變量,則爲靜態)。

namespace My.Namespace 
{ 
    public class MyClassA 
    { 
     public void MyMethod() 
     { 
      // Use value from MyOtherClass 
      int myValue = My.Other.Namespace.MyOtherClass.MyInt; 
     } 
    } 
} 

namespace My.Other.Namespace 
{ 
    public class MyOtherClass 
    { 
     private static int myInt; 
     public static int MyInt 
     { 
      get {return myInt;} 
      set {myInt = value;} 
     } 

     // Can also do this in C#3.0 
     public static int MyOtherInt {get;set;} 
    } 
} 
3

要加入這個My.Namespace聲明之上添加到安迪的回答,您還可以縮短調用敏屬性:

using My.Other.Namespace 

如果你這樣做,那麼你的調用敏屬性看起來像這樣:

int MyValue = MyOtherClass.MyInt