【问题标题】:Parsing string for object property解析对象属性的字符串
【发布时间】:2021-10-28 01:48:54
【问题描述】:

如何将“帐户”转换为

<Account>

或“对象名”改成

<Object with matching name>

我正在尝试解析字符串并用对象属性替换字符串中的值。

这与我们发送套用信函的方式类似,您知道尊敬的 [客户名称],感谢您购买 [某些商品]。在这种情况下,字母中的字段不是我设置的,我需要一种将文本块中的内容转换为对象属性的方法。

目前我正在使用字符串 {value=x; 中的代码id=y ;property=z} 并通过 switch case 运行它以将其转换为对象。然后将 {} 替换为对象属性。

例如“一些随机字符串 {value=1;id=1;property=Name} 连续随机字符串”

我解析字符串以定位 {value=,在点击时它会通过 switch case,在 case 1 中:返回 Account(ID = 1)。我抢的 Account.Name

一旦我把它放在一个文本框中,这样用户就可以在生成要发送的最终文档之前验证它是否正确。

有没有办法在字符串中包含 {Object.Property} 然后使用反射将该字符串值转换为对象值?

Get property value from string using reflection

我在其他情况下使用了上述内容,但这需要我拥有对象。

【问题讨论】:

  • 我已删除您的 ASP.NET 标记,因为您的问题内容中没有任何与 ASP.NET 相关的内容。我想知道你为什么要重新发明轮子并制作一个穷人的 JSON?
  • 您可以使用 JSON 来执行此操作吗?等等等等等等 {Account.Name} 等等等等等等。我用它来抓取一个对象,但不替换字符串中的部分。它也可以是 {Person.Name} 或 {Car.Name}。我不熟悉使用 JSON 执行此操作的方法
  • 你能决定你使用的一种模式吗?您发布了:[token]、{token}、{C#_object} 和“token”。看起来您应该使用正则表达式来匹配您的模式并返回任何匹配项的索引。
  • 感谢 Oliver 继续让 SO 成为现在的样子....
  • @OlivierRogier 如果知道答案是投反对票的先决条件,那会很酷。

标签: c# string parsing replace reflection


【解决方案1】:
public static List<string> GetClassProperties(string className, IEnumerable<string> propertiesToExclude = null)
        {
            Type theType = Type.GetType(className);
            if (theType == null)
            {
                return null;
            }
}

这将为您提供 Object 类型,您确实需要完整的命名空间才能使其工作,不能只是“Account”,还需要 Project.Models.Account

【讨论】:

  • 这不是关于反射,而是解析字符串!
  • 如果你仍然返回 null,那么 null 检查也是完全多余的。
  • 我有理由确定你不明白我在问什么。我在问如何将“帐户”转换为对象帐户。这就是为什么这个问题最初被标记为反射
  • 可以肯定的是,您不了解反射是什么。反射如何帮助您创建对象的实例并使用从字符串中提取的值对其进行初始化?
  • 字符串值和对象之间有很强的映射关系。最简单的是使用 JSON,因为即使使用文本编辑器也可以轻松编辑它,并且您可以使用序列化直接从它创建相关 C# 对象的实例。相信我,你不需要为这份工作反思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多