Tengo una clase, que contiene un diccionario estático de todas las instancias existentes, que se definen en tiempo de compilación.C# DataContract Serialización, cómo deserializar a la instancia ya existente
Básicamente se parece a esto:
[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];
}
}
Existen otros campos, y la clase se deriva, pero esto no tiene importancia para el problema.
Solo se serializa id
. Cuando se deserializa una instancia de este tipo, me gustaría obtener la instancia que se ha creado como campo estático (A
, B
o C
), usando Foo.Get(id)
en lugar de obtener una nueva instancia.
¿Hay una manera simple de hacer esto? No encontré ningún recurso que pude entender.
que en realidad no quieren preocuparse de la clase utilizando, porque 'foo' es una clase muy central y utilizar desde muchos otros tipos. –
¿Cómo se vería esta implementación? –
por favor vea mi respuesta editada – ironic