12

Possible Duplicate:
C# How can I get the value of a string property via Reflection?

public class myClass
{
    public int a { get; set; }
    public int b { get; set; }
    public int c { get; set; }
}


public void myMethod(myClass data)
{
    Dictionary<string, string> myDict = new Dictionary<string, string>();
    Type t = data.GetType();
    foreach (PropertyInfo pi in t.GetProperties())
    {
        myDict[pi.Name] = //...value appropiate sended data.
    }
}

Simple class with 3 properties. I send object of this class. How can I i loop get all property names and its values e.g. to one dictionary?

Community
  • 1
  • 1
Saint
  • 5,397
  • 22
  • 63
  • 107

2 Answers2

40
foreach (PropertyInfo pi in t.GetProperties())
    {
        myDict[pi.Name] = pi.GetValue(data,null)?.ToString();

    }
Adrian Iftode
  • 15,465
  • 4
  • 48
  • 73
11

This should do what you need:

MyClass myClass = new MyClass();
Type myClassType = myClass.GetType();
PropertyInfo[] properties = myClassType.GetProperties();

foreach (PropertyInfo property in properties)
{
    Console.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(myClass, null));
}

Output:

Name: a, Value: 0

Name: b, Value: 0

Name: c, Value: 0

Community
  • 1
  • 1
James Hill
  • 60,353
  • 20
  • 145
  • 161