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);
が常に false であることです。
私が見つけた唯一の方法は、ユーザーのリストを保存し、次にグループのリストを保存し、ユーザーの内部に GroupId プロパティを持つことです。次に、すべてが逆シリアル化された後、ユーザー内のグループの参照を手動で挿入します。ハックです。
この問題にアプローチする最良の方法は何ですか?