J'ai une classe qui contient un dictionnaire statique de toutes les instances existantes, qui sont définies au moment de la compilation.C# DataContract Sérialisation, désérialisation d'une instance déjà existante
Fondamentalement, il ressemble à ceci:
[DataContract]
class Foo
{
private static Dictionary<long, Foo> instances = new Dictionary<long, Foo>();
[DataMember]
private long id;
public static readonly Foo A = Create(1);
public static readonly Foo B = Create(2);
public static readonly Foo C = Create(3);
private static Foo Create(long id)
{
Foo instance = new Foo();
instance.id = id;
instances.Add(instance);
return instance;
}
public static Foo Get(long id)
{
return instances[id];
}
}
Il y a d'autres domaines, et la classe est dérivée, mais cela n'a pas d'importance pour le problème.
Seul le id
est sérialisé. Quand une instance de ce type est désérialisée, je voudrais obtenir l'instance qui a été créée en tant que champ statique (A
, B
ou C
), en utilisant Foo.Get(id)
au lieu d'obtenir une nouvelle instance.
Existe-t-il un moyen simple de faire cela? Je n'ai trouvé aucune ressource que j'ai pu comprendre.
Je ne veux pas en fait la classe en utilisant concernés, parce que 'foo' est une classe très central et utilisé à partir beaucoup d'autres types. –
A quoi ressemblerait cette implémentation? –
s'il vous plaît voir ma réponse éditée – ironic