动态对象属性名称以数字开头 [英] Dynamic object property name begins with number
本文介绍了动态对象属性名称以数字开头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个动态对象,其属性以数字开头。
I have a dynamic object whose property begins with number. How to access this property?
对于inst:
myResult.123; // this is unvalid
任何帮助将不胜感激。
推荐答案
如果您将ExpandoObject用于动态对象,则可以强制转换为 IDictionary< string,object>
和使用索引器;
If you are using ExpandoObject for your dynamic object, you can cast to IDictionary<string, object>
and use an indexer;
dynamic expando = new ExpandoObject();
var dict = (IDictonary<string, object>)expando;
dict["123"] = 2;
许多其他动态对象实现(例如Json.NET中的JObject)提供了类似的功能。
Many other dynamic object implementations (e. g. JObject in Json.NET) provide similar functionality.
以下是JObject的示例:
Here's an example with JObject:
var json = JsonConvert.SerializeObject(new Dictionary<string, object> { { "123", 10 } });
var deserialized = JsonConvert.DeserializeObject<object>(json);
// using the IDictionary interface
var ten = ((IDictionary<string, JToken>)deserialized)["123"].Value<JValue>().Value;
Console.WriteLine(ten.GetType() + " " + ten); // System.Int64 10
// using dynamic
dynamic d = deserialized;
Console.WriteLine(d["123"].Value.GetType() + " " + d["123"].Value); // System.Int64 10
这篇关于动态对象属性名称以数字开头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文