2013-07-05 2 views
0

Я пытаюсь получить переменную (string) из другого пространства имен. Я пробовал много возможностей, но ни один из них не преуспел.Получение переменной из другого пространства имен не работает

namespace CPLoader 
{ 
    public class dbC 
    { 
     public string _CS { get; set; } 
    } 
} 

Если я MessageBox "_CS", это всегда пусто. У меня нет никаких ошибок, ссылка на CPLoader установлен ...

Я установил это значение следующим образом:

namespace CP 
{ 
    public class dbMain 
    { 
     private void MyMethod() 
     { 
      ... do work ... 
      CPLoader.dbC._CS = Mystring; 
     } 
    } 
} 

Почему это не работает?

+5

Чтобы использовать 'CPLoader.dbC._CS' как в вашем примере, свойство должно быть помечено как' static' - в качестве альтернативы, вы должны создать экземпляр 'dbC' например,' вар myDbc = новый DBC() ; ' – andreister

+0

Я тоже пробовал эту возможность .. Не работает, он всегда пуст. – DeMama

+1

Действительно, ваш код, как написано, не будет компилироваться, поэтому, возможно, вы должны включить более полный пример. Код, который вы опубликовали, даст сообщение об ошибке компилятора, для которого требуется экземпляр 'dbC' для доступа к нестатистическому свойству' _CS'. –

ответ

0

Обычно переменные не живут в пространстве имен, они живут внутри другого класса, который может находиться в другом пространстве имен. Если вам нужно получить доступ к переменной в другом классе (в другом пространстве имен), ваш другой класс должен каким-то образом выставить переменную. Общей практикой для этого является использование открытого свойства (статического, если вам нужен только доступ к этой переменной) для переменной.

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

namespace My.Some.Namespace 
{ 
    public class MyClassB 
    { 
     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;} 
    } 
} 
0

способ, которым вы хотите получить доступ к переменной, необходимой для ее статичности.

namespace CPLoader 
{ 
    public class dbC 
    { 
     public static string _CS { get; set; } 
    } 
} 
Смежные вопросы