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,或使用您选择的序列化程序。