在 C# 中,如果只有索引号,如何获取索引属性的名称
本文关键字:索引 获取 属性 如果 何获取 | 更新日期: 2023-09-27 18:37:02
我有一个由json映射器函数(使用LitJson)创建的对象。它包含索引属性。
我可以循环访问属性并像这样获取每个属性值
for(int i = 0; i < jdata.Count;i++) {
Console.WriteLine(jdata[i]);
}
我想以字符串形式获取每个属性名称,而不是属性值。
我发现的最接近的东西是这个https://stackoverflow.com/questions/1011109/how-do-you-get-the-name-of-the-property
这在哪里工作
string name = ReflectionUtility.GetPropertyName((Sample2 s) => s.Foo);
但事实并非如此(似乎是因为它是索引属性?
string name = ReflectionUtility.GetPropertyName((Sample2 s) => s[0]);
我
发现我必须先将 JsonData 强制转换为 IDictionary,然后才能访问 Keys 属性。
这样:
JsonData x = getMyData();//however you're getting your JsonData object
var keys = (x as IDictionary).Keys; // you should probably check for null
foreach(string s in keys)
Console.WriteLine("Another key: "+s);
我找到了源代码。看起来JsonData
实现了 IDictionary,因此您应该能够访问 Keys
属性。
器基本上是作为接受索引参数的函数实现的,因此无法使用反射来获取与给定索引关联的"名称"。