OK, 나는이 같은 클래스가 있다면 ... 직렬화 '이'
[serializable]
public class MyClass() : ISerializable
{
public Dictionary<string, object> Values {get; set;}
}
은 내가 신속한 답변을 찾으려고 사람들을 위해, 그것은 (답을 직렬화 할 필요가 알고이며, 이) ...
protected MyClass(SerializationInfo info, StreamingContext context)
{
Values = (Dictionary<string, object>)info.GetValue("values", typeof(Dictionary<string, object>));
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("values", Values);
}
대신 Dictionary에서 상속받은 클래스를 정의하고 싶다면 어떻게해야합니까?
나는 여기까지 ...
[serializable]
public class MyClass() : Dictionary<string, object>, ISerializable
{
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("me", this);
}
}
하지만 내가 길을 잃기를 얻을. 나는 이것을 쓸 수 없다 ...
protected MyClass(SerializationInfo info, StreamingContext context)
{
this = (MyClass)info.GetValue("me", typeof(MyClass));
}
'cos'this is r/o. 그래서, 어떻게 진행하겠습니까? GetObjectData() 구현에 대해서도 맞습니까?
나는 그것이 차이를 만들 것입니다 생각하지 않지만, 이미 ISerializable
를 구현하는 것이 않는 경우를 대비, 나는 (this 참조) 닷넷 4.0
왜 'ISerializable'을 구현하고 있습니까? 디폴트 직렬화는 거의 모든 것에 적용되며 지금까지 본 ISerializable 구현 중 90 %는 아직 실현되지 않은 사람들로부터의 것입니다. – Yaur
@Yaur a : 사전과 같은 것을 상속 할 때는 ** 필수 **입니다 (캡슐화가 더 좋은 아이디어라고 주장 하겠지만). 즉, b : 개인적으로 BinaryFormatter를 지나치게 추천하지 않으려 고 노력합니다. –
@Yaur. 그렇지 않은 경우 클래스 인스턴스를 deserialize하려고하면 예외가 발생합니다. 내 수업에서 Dictionary를 사용하고 있다면 ISerializable을 구현해야합니다. –