gpt4 book ai didi

c# - 使用存储在字符串中的 C# 对象初始化语法实例化匿名对象

转载 作者:太空狗 更新时间:2023-10-29 18:02:34 28 4
gpt4 key购买 nike

使用 C# 对象初始化器语法,我可以像这样实例化一个匿名对象:

object empData = new { name = "bob", age = 30, salary = 100000 };

但是如果我将初始值设定项存储在一个字符串中,例如:

string init = "{ name = \"bob\", age = 30, salary = 100000 }";

将此字符串转换为对象实例的最佳方法是什么?

最佳答案

匿名类是 C# syntactic sugar (参见备注部分 here)。 csc.exe 创建一个具有私有(private)字段和读/写属性的类,该属性具有从上下文推断的类型。同样,推断对象的所有用途。

这意味着您不能在运行时创建匿名类,因为 CLR 认为它们与任何其他类没有区别(同样,因为它是 C# 语法糖)。

所以改为:

  • 使用 Dictionary<string,object>
  • 使用 JSON.NET、XML 或类似的东西,它们具有一些已定义的方案来解析字符串以获取对象。但是,这需要明确定义属性。
  • 使用System.Reflection.Emit在运行时创建类型,但我认为这比 Dictionary<string,object> 没有真正的好处

我也很担心你在做什么,因为这作为一个字符串对我来说很可能意味着你正在接受某种用户输入。无论您做什么,都要警惕安全问题。

关于c# - 使用存储在字符串中的 C# 对象初始化语法实例化匿名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899962/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com