Możesz uzyskać wszystkie właściwości danego typu, używając metody GetProperties
. Następnie możesz filtrować tę listę przy użyciu metody LINQ Where
. Na koniec możesz wyświetlać właściwości za pomocą metody LINQ Select
lub wygodnego skrótu, takiego jak ToDictionary
.
Jeśli chcesz ograniczyć wyliczanie do właściwości mających typu String
można użyć tego kodu:
IDictionary<String, String> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead && p.PropertyType == typeof(String))
.ToDictionary(p => p.Name, p => (String) p.GetValue(myObject, null));
Spowoduje to utworzenie słownika, który mapuje nazwy własności do wartości nieruchomości. Ponieważ typ właściwości jest ograniczony do String
, bezpieczne jest rzutowanie wartości właściwości na String
, a typ zwracanego typu to IDictionary<String, String>
.
Jeśli zamiast tego chcesz wszystkie właściwości można zrobić to tak:
IDictionary<String, Object> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead)
.ToDictionary(p => p.Name, p => p.GetValue(myObject, null));
Zamiast pi.GetGetMethod() Invoke (myObject, null) Wolę używać pi.GetValue (myObject, null.) - prostsze do odczytania. – Sam