저는 ISerializable로 직렬화 가능/비 직렬화 가능하게 만든 하위 클래스가있는 사용자 정의 추상 기본 클래스를가집니다. 이 클래스의 하위 클래스의 단일 인스턴스에 대한 직렬화/비 직렬화를 수행하면 모든 것이 잘 동작합니다. 그러나 배열을 만들 때 직렬화에 항상 null 배열이 생깁니다. 직렬화는 BinaryFormatter로 수행됩니다.배열의 비 직렬화는 항상 널 배열을 제공합니다.
항목이 포함되어 있습니다
Trade[] trades = (Trade[])Trades.ToArray<Trade>();
info.AddValue("trades", trades);
그리고 직렬화 이것에
가에 또한 직렬화 생성자에서 이루어집니다 :이 SerializationInfo에 매개 변수에 GetObjectData에서 이루어집니다 직렬화에public ObservableCollection<Trade> Trades { get; private set; }
SerializationInfo 매개 변수 :
Trade[] trades = (Trade[])info.GetValue("trades", typeof(Trade[]));
foreach (Trade t in trades)
{
Trades.Add(t);
}
Des erialization은 항상 나에게 널 (null)의 배열을 제공하고 앞서 언급 한 바와 같이, 하나의 항목은 직렬화이 코드를 잘 deseriaizes :
직렬화 (GetObjectData 방법) :
info.AddValue("trade", Trades.First<Trade>());
역 직렬화 (직렬화 생성자) :
Trade t = (Trade)info.GetValue("trade", typeof(Trade));
Trades.Add(t);
일반적인 문제입니까? 나는 적어도 다른 사람이 그곳에 뛰어 드는 것을 발견하지 못하는 것 같습니다. 다행히도 해결책이 있습니다 :) 그리고 더 많은 정보/코드를 제공해야 할 필요가 있다면 말해주십시오.
감사합니다.
안녕하세요. 정보 변수는 무엇입니까? 직렬화의 형식은 무엇입니까? XML 또는 바이너리? –
GetObjectData 및 Serialization-constructor에서 사용하는 SerializationInfo입니다. 미안합니다. – vesz
http://stackoverflow.com/questions/126155/c-array-xml-serialization 어떤 도움이 필요합니까? – Polity