C# 9 记录有来自 ToString() 的 { propertyName=value } 输出,如何从中返回记录类型?
C# 9 records have { propertyName=value } output from ToString(), how to get from that, back to the record type?
给定
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,那么逆向过程将相当简单。
我想我需要一个通用的修复程序。也许是一种转换扩展方法,但我需要弄清楚如何仅在记录类型上 select 。或者只使用 JSON serialize/deserialize 并忽略默认的内置 ToString().
我试过这个:
var converted = (SimpleRec)Convert.ChangeType(recordString, typeof(SimpleRec));
但是扔了一个 InvalidCastException
.
此处使用的 ToString
并不意味着以这种解析方式进行编程 - 它仅用于调试,仅此而已。如果您需要确定性的东西:编写您自己的 ToString
,或使用您选择的序列化程序。
给定
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,那么逆向过程将相当简单。
我想我需要一个通用的修复程序。也许是一种转换扩展方法,但我需要弄清楚如何仅在记录类型上 select 。或者只使用 JSON serialize/deserialize 并忽略默认的内置 ToString().
我试过这个:
var converted = (SimpleRec)Convert.ChangeType(recordString, typeof(SimpleRec));
但是扔了一个 InvalidCastException
.
此处使用的 ToString
并不意味着以这种解析方式进行编程 - 它仅用于调试,仅此而已。如果您需要确定性的东西:编写您自己的 ToString
,或使用您选择的序列化程序。