2014-10-02 1 views
0

Предположим, у меня есть класс, какКак определить, является ли поле объекта readonly или чтение/запись, используя отражение?

class A 
{ 
    public string Field1 = "Field1 initial"; 
    public readonly string Field2 = "Field2 initial"; 
} 

как обнаружить, если поле только для чтения, или нет?

, например, с этим кодом

namespace Example 
{ 
    class A 
    { 
     public string Field1 = "Field1 initial"; 
     public readonly string Field2 = "Field2 initial"; 
    } 

    class Program 
    { 
     static object GetObj() 
     { 
      A a = new A(); 
      return a; 
     } 

     static void Main(string[] args) 
     { 
      var obj = GetObj(); 
      var fieldNames=obj.GetType().GetFields(); 
      foreach (var fieldName in fieldNames) 
       Console.WriteLine(fieldName.Name); 
     } 
    } 
} 

я могу получить имена полей, но не atribute readonly.

Даже если я использую перегруженный GetFields(...), который берет атрибут na перечисления, я не могу получить эту информацию.

Как определить, является ли поле класса readonly или нет?

ответ

2

Свойство вы ищете называется :

FieldInfo.IsInitOnly Недвижимость

Получает значение, указывающее, является ли данное поле может быть установлен только в теле конструктора.

+0

Вы быстро! Благодарю. –

+0

«bigbrother» говорит, что я не могу принять ответ прямо сейчас! Мне нужно подождать 2 минуты ... –

+0

'' georgeorwell '' пришел, чтобы спасти меня! –

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