Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing variables from other namespaces

I am new to C# and programming in general my question is how do you call a variable that is in a different namespace? if I have this code

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

and I am passing in service name how would I call one or multiple variable values from a different namespace?

like image 746
Adonis L Avatar asked Apr 11 '09 22:04

Adonis L


2 Answers

Normally, variables don't live in a namespace alone, they live inside another class that could be in another namespace. If you need to access a variable in another class (in another namespace), your other class needs to expose the variable somehow. The common practice for this is to use a public Property (static if you only need access to that variable) for the 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;}
    }
}
like image 61
Andy White Avatar answered Sep 23 '22 00:09

Andy White


To add to Andy's answer you can also shorten the call to the MyInt property by adding this above the My.Namespace declaration:

using My.Other.Namespace

If you do that then your call to the MyInt property would look like this:

int MyValue = MyOtherClass.MyInt
like image 21
heartlandcoder Avatar answered Sep 23 '22 00:09

heartlandcoder