옵션 |
|
[Serializable]
public class MySerialObject
{
public int Int1 = 0;
public int Int2 = 0;
public int Int3 = 0;
private string str = null;
public string STR
{
get
{
return str;
}
set
{
str = value;
}
}
public void DisplayMember(string Header)
{
Console.WriteLine("** " + Header + " **");
Console.WriteLine("Member 1 ==> " + Int1.ToString());
Console.WriteLine("Member 2 ==> " + Int2.ToString());
Console.WriteLine("Member 3 ==> " + Int3.ToString());
Console.WriteLine("Member 4 ==> " + STR);
Console.WriteLine("");
}
}
//직렬화를 하기 위한 테스트용 클래스 입니다.
//직렬화 후 바이너리 파일로 저장하는 메인 솔루션입니다.
class Program
{
static void Main(string[] args)
{
MySerialObject obj = new MySerialObject();
obj.Int1 = 1;
obj.Int2 = 655;
obj.Int3 = 100;
obj.STR = "my class";
obj.DisplayMember("원래 객체 입니다.");
IFormatter formatter = new BinaryFormatter();
Stream streamWrite = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(streamWrite, obj);
streamWrite.Close();
}
}
해당 메인을 통해서 MyFile.bin 이라는 바이너리 파일 생성 후, 다른 솔루션으로 파일 이동 후 역직렬화를 하려 했으나
namespace BinaryLoad
{
[Serializable]
public class MySerialObject
{
public int Int1 = 0;
public int Int2 = 0;
public int Int3 = 0;
private string str = null;
public string STR
{
get
{
return str;
}
set
{
str = value;
}
}
public void DisplayMember(string Header)
{
Console.WriteLine("** " + Header + " **");
Console.WriteLine("Member 1 ==> " + Int1.ToString());
Console.WriteLine("Member 2 ==> " + Int2.ToString());
Console.WriteLine("Member 3 ==> " + Int3.ToString());
Console.WriteLine("Member 4 ==> " + STR);
Console.WriteLine("");
}
}
class Program
{
static void Main(string[] args)
{
IFormatter formatter = new BinaryFormatter();
Stream streamRead = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.None);
MySerialObject deSerialObj = (MySerialObject)formatter.Deserialize(streamRead);
streamRead.Close();
//deSerialObj.DisplayMember("역직렬화 바이너리 생성 객체");
}
}
}
위와 같이 역직렬화를 시도했지만, 파일은 읽어들일 수 있으나, 객체를 생성할 수가 없더군요.
하지만 한 솔루션에서 저장 및 불러오기 과정은 성공적으로 되었습니다.
이 두 가지에서 차이점을 알고 싶습니다.