我正在尝试使用 JSON.Net 模拟外键行为,但我似乎无法找到获得真实引用的方法。
假设我有这个简单的例子:
private static void Main(string[] args)
{
var g1 = new Group {Name = "g1"};
var g2 = new Group {Name = "g2"};
var users = new[]
{
new User{ Username = "truc", Group = g1 },
new User{ Username = "machin", Group = g2 },
new User{ Username = "dom", Group = g2 },
new User{ Username = "boum", Group = g2 }
};
string json = JsonConvert.SerializeObject(users);
var jsonUsers = JsonConvert.DeserializeObject<User[]>(json);
Console.WriteLine(jsonUsers[2].Group == jsonUsers[3].Group);
Console.ReadLine();
}
这里的问题是它Console.WriteLine(jsonUsers[2].Group == jsonUsers[3].Group);
总是错误的。
我发现使它起作用的唯一方法是存储用户列表,然后是组列表并在用户内部具有 GroupId 属性。然后在所有内容都反序列化后,我手动在用户内部插入组的引用。这很骇人听闻。
解决这个问题的最佳方法是什么?