c# - 获得公共(public)领域?

标签 c# reflection

我有一个这样定义的结构

private struct Combinators
{
    public const char DirectChild = '>';
    public const char NextAdjacent = '+';
    public const char NextSiblings = '~';
    public const char Descendant = ' ';
}

我想使用反射来获取结构中 public const char 字段的所有值的列表(尽可能具体)。我该怎么做?

最佳答案

var fieldValues = typeof(Combinators)
    .GetFields()
    .Where(x => x.FieldType == typeof(char) && x.IsLiteral)
    .ToDictionary(x => x.Name, x => (char)x.GetValue(null));

返回 Dictionary<string, char>其中键是字段名称,值是字段值(作为字符)。

更新:根据评论和@nasufara 的建议添加了 where 子句,并添加了 IsLiteral根据@Jeff M 的检查。

关于c# - 获得公共(public)领域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3898405/

相关文章:

c# - 需要从 linq 检索 Tablet>

C# - 使用 Guid 参数引发事件的单元测试方法

java - 如何将DTO解析为Pojo对象

java - 使用反射调用 java/groovy 对象的静态方法

C# Reflection - 如何为结构设置字段值

c# - 我似乎无法在 WinRT BackgroundTask 中使用依赖注入(inject)

C# - 图表光标不跟随鼠标点值

c# - XDocument 获取 XML 文件的一部分

java - 当我通过反射创建对象时,如何重写 Java 中的方法?

java - 使用反射和 ClassLoaders 创建类的实例时出现 ClassCastException