나는 컴파일 타임에 정의 된 모든 기존 인스턴스의 정적 사전을 보유하는 클래스가 있습니다.C# DataContract Serialization, 기존 인스턴스에 deserialize하는 방법
[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];
}
}
다른 분야가 있으며, 클래스는 파생하지만,이 문제에 대한 문제가되지 않습니다
은 기본적으로는 다음과 같습니다.
id
만 직렬화됩니다. 이 형식의 인스턴스를 deserialize 할 때 새 인스턴스를 가져 오는 대신 Foo.Get(id)
을 사용하여 정적 필드 (A
, B
또는 C
)로 만든 인스턴스를 가져 오려고합니다.
간단한 방법이 있나요? 내가 이해할 수있는 자원을 찾지 못했습니다.
내가 실제로 사용하는 클래스가'Foo'는 매우 중앙 클래스이기 때문에, 해당과에서 사용하지 않을 : GetObject 메서드에서는
그런 다음, 직렬화 때 기존 개체를 얻을 많은 다른 유형. –
이 구현은 어떻게 생겼습니까? –
내 편집 된 회신 – ironic