2014-11-03 7 views
0

Простая консольная консоль C# для проверки того, как получить поля неизвестного объекта.Ошибка при получении полей объекта

public class A 
{ 
    public int id; 
    public string name; 
    public string desc; 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     A a = new A(); 
     getProp(a); 
     Console.ReadKey(); 
    } 

    static object getProp(object o) 
    { 
     Type type = o.GetType(); 
     PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); 

     //Do Something 
     return null; 
    } 
} 

У меня нет полей. pros не имеет ценности внутри. Я должен получить имена полей object o.

+1

Это не объекты, это поля. –

+10

У вас есть * поля *, а не свойства. Свойства будут выглядеть как 'public int id {get; задавать; } '(для автоматического свойства). – Tim

+0

ОК. виноват. Есть ли способ получить поля? –

ответ

1

Члены, которые вы пытаетесь принести не свойства, но поля. Попробуйте следующее:

var fields = typeof(A).GetFields(); 

Или:

static FieldInfo[] GetFields(object o) 
{ 
    Type type = o.GetType(); 
    FieldInfo[] fields = type.GetFields(); 

    return fields; 
} 

И для того, чтобы захватить значения полей объекта:

var fields = GetFields(obj); 
foreach(var field in fields) 
{ 
    Console.WriteLine(field.GetValue(obj)); 
} 

Из MSDN:

Type.GetFields Метод

Возвращает все общедоступные поля текущего типа.

+1

.. или, конечно, сделать их свойствами .. – TaW

+0

@TaW Да .. не должно быть проблемой. –

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