动态对象属性名称以数字开头

Mes*_*sut 3 .net c#

我有一个动态对象,其属性以数字开头。如何访问此属性?

例如:

myResult.123; // this is unvalid
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

Cha*_*ion 5

如果您将 ExpandoObject 用于动态对象,则可以转换为IDictionary<string, object>并使用索引器;

dynamic expando = new ExpandoObject();
var dict = (IDictonary<string, object>)expando;
dict["123"] = 2;
Run Code Online (Sandbox Code Playgroud)

许多其他动态对象实现(例如 Json.NET 中的 JObject)提供了类似的功能。

下面是一个 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
Run Code Online (Sandbox Code Playgroud)