2009-04-11 7 views
2

Ich bin neu in C# und Programmierung im Allgemeinen meine Frage ist, wie rufen Sie eine Variable, die in einem anderen Namespace ist? wenn ich diesen CodeZugriff auf Variablen aus anderen Namespaces

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"]); 
    } 

und ich vorbei in Service-Namen wie würde ich einen oder mehrere aus einem anderen Namespace Variablenwerte nennen?

+0

Sie sollten Ihre Frage erweitern, scheint es kein Problem in Ihrem Code zu sein. – Samuel

+0

Meinst du den Zugriff auf eine Klasse in einem anderen Namespace? Sie können keine frei schwebenden Variablen außerhalb einer Klasse haben. –

Antwort

7

Normalerweise leben Variablen nicht in einem Namespace, sie leben in einer anderen Klasse, die sich in einem anderen Namespace befinden könnte. Wenn Sie auf eine Variable in einer anderen Klasse (in einem anderen Namespace) zugreifen müssen, muss die andere Klasse die Variable irgendwie verfügbar machen. Die übliche Vorgehensweise hierfür ist die Verwendung einer öffentlichen Eigenschaft (statisch, wenn Sie nur auf diese Variable zugreifen müssen) für die Variable.

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

zu Andys Antwort hinzuzufügen können auch durch Zugabe dieses über dem My.Namespace Erklärung den Anruf an die MyInt Eigenschaft verkürzen können:

using My.Other.Namespace 

Wenn Sie das tun, dann Ihren Anruf an die MyInt Eigenschaft würde so aussehen: