给定
public record SimpleRec(string PropertyName);
[TestMethod]
public void Test()
{
var simpleRecord = new SimpleRec("property");
var recordString = simpleRecord.ToString();
Console.WriteLine(recordString);
}
输出:
SimpleRec { PropertyName = property }
是否有同样简单的方法从 recordString
实例化 SimpleRec
?
我希望我们不必搞乱 XML 或 JSON 序列化程序。
令我困惑的是,他们首先选择了上述字符串格式来转换为字符串。如果它有输出 Xml、JSON 甚至 YAML,那么逆向过程将相当简单。
我想我需要一个通用的解决方案。也许是一种转换扩展方法,但我需要弄清楚如何仅选择记录类型。或者只使用 JSON 序列化/反序列化并忽略默认内置的 ToString()。
我尝试过这个:
var converted = (SimpleRec)Convert.ChangeType(recordString, typeof(SimpleRec));
但是抛出了一个InvalidCastException
。
最佳答案
这里使用的 ToString
并不意味着以这种解析方式进行编程使用 - 它意味着对调试有用,仅此而已。如果您需要确定性的东西:编写您自己的 ToString
,或使用您选择的序列化器。
关于C# 9 记录有 ToString() 的 { propertyName=value } 输出,如何从中返回记录类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69147729/