动态对象属性名称以数字开头 [英] Dynamic object property name begins with number

查看:94
本文介绍了动态对象属性名称以数字开头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个动态对象,其属性以数字开头。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆