Ho una classe, che contiene un dizionario statico di tutte le istanze esistenti, che sono definite in fase di compilazione.Serializzazione C# DataContract, come deserializzare su un'istanza già esistente
In pratica sembra che questo:
[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];
}
}
Non ci sono altri campi, e la classe deriva, ma questo non ha importanza per il problema.
Solo il id
è serializzato. Quando un'istanza di questo tipo viene deserializzata, mi piacerebbe ottenere l'istanza creata come campo statico (A
, B
o C
), utilizzando Foo.Get(id)
invece di ottenere una nuova istanza.
C'è un modo semplice per farlo? Non ho trovato risorse che potessi capire.
Io in realtà non voglio la classe usando preoccuparsi, perché 'foo' è una classe molto centrale e utilizzato da molti altri tipi. –
Come sarebbe questa implementazione? –
vedere la mia risposta modificata – ironic