【发布时间】:2016-06-22 13:28:53
【问题描述】:
我使用的是Entity Framework Core,生成的类有自己的属性,即
DataModel.Agent.cs
public partial class Agent {
public virtual decimal Id
{
get;
set;
}
public virtual string Name
{
get;
set;
}
}
但我需要其他属性,所以我在另一个文件中声明它们:
Agent.cs
public partial class Agent
{
[NotMapped]
public dynamic Custom { get; set; }
}
问题是Agent.cs是在DataModel.Agent.cs之前编译的,所以编译器生成属性的顺序是:Custom、Id、Name,生成的JSON很奇怪。
我希望它是:ID、名称、自定义。换句话说,我总是希望 DataModel 类排在第一位。
编辑:澄清一下,唯一的目标是通过始终将 Id 放在首位来使 JSON 更漂亮,这是一种非常常见的模式。这对应用程序的工作方式绝对没有影响。
有没有办法强制编译器总是先编译其中一个文件?
【问题讨论】:
-
这是真的,不应该依赖 JSON 属性顺序。
-
Json 对象被序列化为字典。字典键没有固有顺序
-
“生成的 JSON 很奇怪”是什么意思?对象在 JSON 中被序列化为字典,并且没有固有的顺序。具有 ID、名称、自定义的字典等效于与具有相同值的另一个具有 ID、自定义、名称的字典
-
我正在使用 ASP.Net Core,它使用 Json.Net,它使用与属性声明相同的顺序进行序列化。奇怪的意思是我总是希望 Id 成为 JSON 上的第一个字段,这是一种非常常见的方法,但它不是那样工作的。此外,它只是为了让 JSON 更漂亮,它对应用程序的工作方式完全没有影响。
标签: c# .net partial-classes