我有一个仅包含字符串属性的静态类。我想将该类转换为使用key=PropNamevalue=PropValue的名称-值对字典。

以下是我编写的代码:

void Main()
{
            Dictionary<string, string> items = new Dictionary<string, string>();
                var type = typeof(Colors);
                var properties = type.GetProperties(BindingFlags.Static);

                /*Log  properties found*/
                            /*Iam getting zero*/
                Console.WriteLine("properties found: " +properties.Count());

                foreach (var item in properties)
                {
                    string name = item.Name;
                    string colorCode = item.GetValue(null, null).ToString();
                    items.Add(name, colorCode);
                }

                /*Log  items created*/
                Console.WriteLine("Items  in dictionary: "+items.Count());
}

    public static class Colors
    {
        public static  string Gray1 = "#eeeeee";
        public static string Blue = "#0000ff";
    }


输出量

properties found: 0
Items  in dictionary: 0


它没有读取任何属性-有人可以告诉我我的代码有什么问题吗?

最佳答案

Colors类中的成员不是properties,而是fields

使用GetFields代替GetProperties方法。

您可能会得到类似以下内容(也不会更改GetValue的调用):

                var properties = type.GetFields(BindingFlags.Static);

                /*Log  properties found*/
                            /*Iam getting zero*/
                Console.WriteLine("properties found: " +properties.Count());

                foreach (var item in properties)
                {
                    string name = item.Name;
                    string colorCode = item.GetValue(null).ToString();
                    items.Add(name, colorCode);
                }

10-04 18:46