我有一个仅包含字符串属性的静态类。我想将该类转换为使用key=PropName
,value=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);
}