2015-08-09 2 views
0

я пошел доступ доступа модификатор переменной другого класса строкойAccess модификатор доступа со ссылкой на значение переменной в C#

пошел доступ к переменной типа String модификатор доступа из другого класса со ссылкой на значение переменной. в коде простая строковая переменная - это доступ, но для переменной модификатора доступа она дает исключение. Как я могу получить к нему доступ.

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     {  
      MyReflectionClass c = new MyReflectionClass(); 
      var t = c.GetType().GetField("str1").GetValue(c); 
      Console.WriteLine(t); 
      var test = c.GetType().GetField("str").GetValue(c); 
      Console.WriteLine(test); 
      Console.ReadKey(); 
     } 
     public class MyReflectionClass 
     { 
      public string str { get { return "String with access modifier "; } } 
      public string str1 = "string variable"; 
     } 
    } 
} 

Выход: строковая переменная

ответ

0

str1 не поле, это свойство. Поэтому вам необходимо использовать метод GetProperty.

var test = c.GetType(). GetProperty("str") .GetValue(c); 

Она также возвращает PropertyInfo экземпляра вместо FieldInfo, но он имеет те же GetValue метод.

+0

Получил благодарность за помощь –

+0

Как я могу использовать модификатор доступа для установки значения str –

+0

Нет, потому что 'str' не имеет сеттера (' set' part). Если вы добавите setter, вы сможете сделать то же самое, но с помощью 'SetValue' в конце. 'c.GetType(). GetProperty (« str »). SetValue (c, x);' – dmay

Смежные вопросы