Для этого нужно использовать отражение (System.Reflection
).Прежде всего, вам нужно получить объект Type объекта, от которого вы хотите получить все свойства.Затем вызовите метод GetProperties () , который вернет массив объектов PropertyInfo .Затем выполните все эти объекты, собирая нужную информацию.
public static IDictionary<string, object> GetAllProperties(object obj)
{
var toret = new Dictionary<string, object>();
Type objType = obj.GetType();
PropertyInfo[] properties = objType.GetProperties();
foreach(PropertyInfo pinfo in properties) {
toret.Add( pinfo.Name, pinfo.GetValue( obj ) );
}
return toret;
}
Например, для такого объекта, как этот:
class Foo {
public int A { get; set; }
public int B { get; set; }
}
Вы можете отобразить имена свойств и значениязаданный объект:
class Ppal {
public static void Main()
{
var foo = new Foo{ A = 5, B = 6 };
foreach(KeyValuePair<string, object> pair in GetAllProperties( foo ) ) {
Console.WriteLine( "Foo.{0} = {1}", pair.Key, pair.Value );
}
}
}
Надеюсь, это поможет.