如何使所有成员优雅地使用类型?

时间:2019-05-30 12:05:44

标签: c# reflection

我已经经历过“ 可能已经找到答案的问题”,但没有找到我想要的东西。 我想通过反射使所有成员成为一个类型。当我尝试

1+true

我有19个成员。

我发现某些成员需要特定的BindingFlags。由于我不知道这些标志和不同的成员具有不同的标志,因此我将所有标志传递为:

var type = typeof(int);
var members = type.GetMembers();
for(var i = 0; i < members.Length; i++)
    Console.WriteLine($"{i, 2} {members[i]}");

它给了我34名成员。这正是我所需要的。

但是在哪一种更优雅(更短)的方式来吸引所有成员?

1 个答案:

答案 0 :(得分:5)

您可以使用LINQ的Aggregate对所有不同的BindingFlags值进行或运算:

var flags = Enum.GetValues(typeof(BindingFlags))
                .Cast<BindingFlags>()
                .Aggregate((x,y) => x | y);