C# SerializationException: Type xxx is not marked as Serializable.

SerializationException: Type xxx is not marked as Serializable.

 유니티3D 프로젝트에 에셋번들 패치 작업 중에 있습니다. 현재 최종 패치된 에셋번들의 이름이나 버젼 정보를 로컬에 저장하기 위해 BinaryFormatter를 가지고 SerDes(직렬화/역직렬화)를 MemoryStream에 하면서 PlayerPrefs에 저장하고 있던 중 제목과 같은 에러가 발생하더군요.

public class MyData {
...
}

 만약 위와같은 클래스를 BinaryFormatter를 통해 직렬화를 한다면 간단히 클래스위에 [Serializable] 이라는 Attribute를 추가해주면 됩니다.

[Serializable]
public class MyData {
...
}

 이렇게요. 한가지더,

SerializationException: Type xxx in assembly Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as serializable.

 이런 에러도 발생했는데 제 경우는

public class MyBaseData {
...
}

public class MyData : MyBaseData {
...
}

 이렇게 직렬화/역직렬화할 클래스가 상속구조였습니다. 이때는 모두다 [Serializable] 해주면 되더군요.

 바이너리로 데이터를 이렇게 쉽게 직렬화/역직렬화 해주다니, 역시 C#은 멋지네요!

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.