이렇게하면 런타임시 직렬화 예외가 발생합니다. 이 작업을 수행하는 가장 좋은 방법을 테스트하는 데모 프로젝트입니다. 나는 main 메소드와 직렬화하려는 클래스를 포함했다.연재시 어떤 실수를 했습니까?
무시 : 정말 자세한 내용을 추가 할 수 없습니다. 문제를 설명하고 코드를 첨부했습니다.이 "자세한 내용을 추가하십시오."라는 것은 지금까지 가장 바보 같은 것입니다. 내가 이미 게시하게 해 줘.
Data toSend = new Data();
toSend.Output();
///SERIALIZE
BinaryFormatter formatter = new BinaryFormatter();
Stream streamOut = File.OpenWrite("file");
formatter.Serialize(streamOut, toSend);
streamOut.Close();
Console.WriteLine("----------------------------");
///DESERIALIZE
Stream streamIn = File.OpenRead("file");
Object received = formatter.Deserialize(streamIn);
Data toReceive = (Data)received;
toReceive.Output();
class Data : ISerializable
{
int integerData;
string stringData;
bool booleanData;
int shouldnotbeserialized;
public Data()
{
integerData = 1;
stringData = "Hello";
booleanData = true;
shouldnotbeserialized = 55;
}
//To deserialize
public Data(SerializationInfo info, StreamingContext context)
{
integerData = info.GetInt32("theint");
stringData = info.GetString("thestring");
booleanData = info.GetBoolean("thebool");
}
public void Output()
{
Console.WriteLine(integerData);
Console.WriteLine(stringData);
Console.WriteLine(booleanData);
Console.WriteLine(shouldnotbeserialized);
}
//Implemented method to serialize
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("thestring", stringData);
info.AddValue("theint", integerData);
info.AddValue("thebool", booleanData);
}
}
예외 메시지 : 어셈블리에
유형 'SerializationDemo.Data' 'SerializationDemo, 문화 = 중립 버전 = 1.0.0.0는, PublicKeyToken = null이' 로 직렬화 표시되지 않습니다.
@walther 'SerializationDemo, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'어셈블리의 'SerializationDemo.Data'형식이 직렬화 가능으로 표시되어 있지 않습니다. – Innkeeper
기다려 ... 그 말은, [] 속성도 필요합니까? 인터페이스에서 충분히 파생되지 않았습니까? – Innkeeper
'[Serializable]'은 당신이 필요로하는 것입니다 – IAbstract