1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class MemberListConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
return MemberValues(value).ToDictionary(t => t.Item1, t => t.Item2);
}
private static IEnumerable<Tuple<string, object>> MemberValues(object obj)
{
var members = obj.GetType().GetMembers(BindingFlags.Instance | BindingFlags.Public);
foreach (var m in members)
{
var p = m as PropertyInfo;
var f = m as FieldInfo;
if (p != null && p.GetIndexParameters().IsNullOrEmpty())
{
yield return Tuple.Create(p.Name, p.GetValue(obj, null));
}
else if (f != null)
{
yield return Tuple.Create(f.Name, f.GetValue(obj));
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
} |
Partager