c# - C# 9 记录有来自 ToString() 的 {propertyName=value} 输出,如何从中获取,返回记录类型?
问题描述
给定
public record SimpleRec(string PropertyName);
[TestMethod]
public void Test()
{
var simpleRecord = new SimpleRec("property");
var recordString = simpleRecord.ToString();
Console.WriteLine(recordString);
}
输出:
SimpleRec { PropertyName = property }
是否有同样简单的方法来实例化SimpleRec
from recordString
?
我希望我们不必弄乱 XML 或 JSON 序列化程序。
令我困惑的是,他们首先选择了上述字符串格式来转换为字符串。如果它有输出 Xml、JSON 甚至 YAML,逆向这个过程将相当简单。
我想我想要一个通用的解决方法。也许是一种转换扩展方法,但我需要弄清楚如何只选择记录类型。或者只是使用 JSON 序列化/反序列化并忽略默认的内置 ToString()。
我试过这个:
var converted = (SimpleRec)Convert.ChangeType(recordString, typeof(SimpleRec));
但是扔了一个InvalidCastException
。
解决方案
这里ToString
使用的 不是为了以这种解析方式进行编程使用——它是为了对调试有用,仅此而已。如果您需要确定性:编写您自己的ToString
,或使用您选择的序列化程序。
推荐阅读
- visual-studio - Visual Studio 2017 到 Visual Studio 2019
- php - 即使在维护模式下如何运行 php 脚本(wordpress)
- html - 盒子阴影覆盖我的整个页面的问题
- css - 如何使用css在输入框前放置标签?
- r - 查看器窗格以错误的尺寸打印
- php - 我怎样才能得到 COUNT(id) 的值
- wordpress - 如何包装 wp_list_pages($args); 与 div 和 ul 元素?
- git - 使用 vs 代码从 github 克隆一个颤振项目
- autodesk-viewer - 如何复制模型浏览器的功能?
- java - 模拟在类级别创建的新对象