Спасибо, но это немного не то что я ожидал, мне хотелось бы такое решение что бы мне при добавлении нового поля не править каждый раз функцию которая возвращает имена.
Type type = obj.GetType();
foreach (var f in type.GetFields().Where(f => f.IsPublic)) {
Console.WriteLine(
String.Format("Name: {0} Value: {1}", f.Name, f.GetValue(obj));
}