Yup:
Type type = typeof(Form); // Or use Type.GetType, etc
foreach (PropertyInfo property in type.GetProperties())
{
// Do stuff with property
}
Questo non darà loro come coppie chiave/valore, ma è possibile ottenere tutti i tipi di informazioni da un PropertyInfo
.
Si noti che questo darà solo proprietà pubbliche. Per quelli non pubblici, è necessario utilizzare il sovraccarico che prende uno BindingFlags
. Se davvero voglio solo coppie nome/valore per le proprietà di un'istanza di un particolare esempio, si potrebbe fare qualcosa di simile:
var query = foo.GetType()
.GetProperties(BindingFlags.Public |
BindingFlags.Instance)
// Ignore indexers for simplicity
.Where(prop => !prop.GetIndexParameters().Any())
.Select(prop => new { Name = prop.Name,
Value = prop.GetValue(foo, null) });
foreach (var pair in query)
{
Console.WriteLine("{0} = {1}", pair.Name, pair.Value);
}
fonte
2010-10-24 19:21:33
Grazie Jon, ha funzionato perfettamente. – SLoret