从其他名称空间访问变量

时间:2009-04-11 22:53:53

标签: c# variables namespaces

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

我在服务名称中传递如何从不同的命名空间调用一个或多个变量值?

3 个答案:

答案 0 :(得分:11)

通常,变量不仅仅存在于命名空间中,它们位于另一个可能位于另一个命名空间中的类中。如果需要访问另一个类中的变量(在另一个名称空间中),则另一个类需要以某种方式公开变量。通常的做法是使用公共属性(如果只需要访问该变量,则为static)。

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

答案 1 :(得分:4)

要添加Andy的答案,您还可以通过在My.Namespace声明上方添加以下内容来缩短对MyInt属性的调用:

using My.Other.Namespace

如果您这样做,那么您对MyInt属性的调用将如下所示:

int MyValue = MyOtherClass.MyInt

答案 2 :(得分:0)

作为副节点,可以通过添加对使用另一个程序集的public成员的程序集的引用来完成。这就是引起我的原因。