C# 如何获取对象实例中类型的所有值/成员

C# 如何获取对象实例中类型的所有值/成员,c#,reflection,C#,Reflection,这看起来应该很简单,但我遗漏了一些东西 我有一门课是这样的: class DataObject { public MyEnum Member1 {get; set;} public MyEnum Member2 {get; set;} public MyEnum Member3 {get; set;} public MyEnum Member4 {get; set;} public MyEnum Member5 {get; set;} public char

这看起来应该很简单,但我遗漏了一些东西

我有一门课是这样的:

class DataObject
{
   public MyEnum Member1 {get; set;}
   public MyEnum Member2 {get; set;}
   public MyEnum Member3 {get; set;}
   public MyEnum Member4 {get; set;}
   public MyEnum Member5 {get; set;}
   public char Member6 {get; set;}
}
var properties = typeof (DataObject)
               .GetProperties(BindingFlags.Instance | BindingFlags.Public)
               .Where(x => x.PropertyType == typeof (MyEnum));
var objectList = new List<DataObject>();
var enumValues = new List<MyEnum>();
foreach (var obj in objectList)
{
     foreach (var prop in properties)
     {
        enumValues.Add((MyEnum)prop.GetValue(obj));
     }
}
var objectList = otherList.Select(x => x.DataObject).ToList();
以及另一个包含该类实例的类。从该对象中,我希望获得该实例中所有MyEnum成员值的列表(即
list
),这样我就可以检查所有这些值,而无需再次键入每个名称

GetProperties只返回所有属性(我想我可以用typeof执行Where查询)


实现这一点的正确方法是什么?

您可以获得如下属性:

class DataObject
{
   public MyEnum Member1 {get; set;}
   public MyEnum Member2 {get; set;}
   public MyEnum Member3 {get; set;}
   public MyEnum Member4 {get; set;}
   public MyEnum Member5 {get; set;}
   public char Member6 {get; set;}
}
var properties = typeof (DataObject)
               .GetProperties(BindingFlags.Instance | BindingFlags.Public)
               .Where(x => x.PropertyType == typeof (MyEnum));
var objectList = new List<DataObject>();
var enumValues = new List<MyEnum>();
foreach (var obj in objectList)
{
     foreach (var prop in properties)
     {
        enumValues.Add((MyEnum)prop.GetValue(obj));
     }
}
var objectList = otherList.Select(x => x.DataObject).ToList();
然后,您可以为每个
数据对象
实例调用
GetValue
方法,并填充
列表

例如,如果您有一个
列表
,您可以这样填充
列表

class DataObject
{
   public MyEnum Member1 {get; set;}
   public MyEnum Member2 {get; set;}
   public MyEnum Member3 {get; set;}
   public MyEnum Member4 {get; set;}
   public MyEnum Member5 {get; set;}
   public char Member6 {get; set;}
}
var properties = typeof (DataObject)
               .GetProperties(BindingFlags.Instance | BindingFlags.Public)
               .Where(x => x.PropertyType == typeof (MyEnum));
var objectList = new List<DataObject>();
var enumValues = new List<MyEnum>();
foreach (var obj in objectList)
{
     foreach (var prop in properties)
     {
        enumValues.Add((MyEnum)prop.GetValue(obj));
     }
}
var objectList = otherList.Select(x => x.DataObject).ToList();

工作得很好!谢谢你的帮助。