【发布时间】:2021-08-20 09:37:07
【问题描述】:
我有一个带有额外便利构造函数的记录:
public record PublishedTestMethod(Guid Id, string Name, int Version, string Status, Guid? Publisher,
DateTimeOffset? DatePublished)
{
public PublishedTestMethod(TestMethod tm) : this(tm.Id, tm.Name, tm.Version, tm.Status, tm.Publisher,
tm.DatePublished)
{
}
}
我想从 JSON 对象反序列化:
JsonConvert.DeserializeObject<PublishedTestMethod>(json);
我得到错误:
找不到用于类型 Namespace.PublishedTestMethod 的构造函数。一个类应该有一个默认构造函数、一个带参数的构造函数或一个标有 JsonConstructor 属性的构造函数。
理想情况下,我想将 [JsonConstructor] 属性分配给 long 构造函数,因为我认为这可以让它从 JSON 中很好地映射。将其添加到记录本身不起作用,并且我看不到构造函数的attribute target。有没有办法做到这一点?
【问题讨论】:
-
我只是在 TestMethod 上创建一个扩展方法,它会创建记录。
-
我已经把
PublishedTestMethod(TestMethod tm)翻成了记录上的静态方法FromTestMethod,这样就避免了这个问题。尽管如此,我认为将它们都保留为构造函数并将第一个标记为用于 JSON 反序列化的构造函数会更优雅。