C# - 역직렬화 도중 생길 수 있는 오류 (추상 클래스를 만들 수 없습니다)

2019. 8. 6. 01:28· Csharp

 

 

C# 의 데이터 저장방식인 직렬화(Serialize), 역직렬화(Deserialize) 도중 다음과 같은 예외가 뜰수도 있음.

 

System.MemberAccessException: '추상 클래스를 만들 수 없습니다'
'System.MemberAccessException' 형식의 예외가 mscorlib.dll에서 발생했지만 사용자 코드에서 처리되지 않았습니다. 추상클래스를 만들 수 없습니다.

 

 

우선 문제가 발생했던 코드는 아래와 같음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
enum icon
{
    Null,
    File,
    Link
}
 
[Serializable]
public class ValueObject
{
    public Enum[] state = Enumerable.Repeat(icon.Null, 16).ToArray();
    public string[] name = new string[16];
    public string[] infor = new string[16];
}
 
 
public partial class MainWindow : Window
{
    private void Load_Data()
    {
        BinaryFormatter readFormatter = new BinaryFormatter();
        FileStream readStream = new FileStream("data.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
        VO = (ValueObject)readFormatter.Deserialize(readStream);
        readStream.Close();
    }
}
Colored by Color Scripter
cs
  • enum icon: 파일의 상태를 나태내기 위해 사용한 열거형
  • ValueObject: 직렬화/역직렬화의 대상이 되는 데이터 클래스
  • Load_Data( ): 데이터를 불러오는 함수이며, 역직렬화 과정임

여기서 문제가 되는 부분은 열거형임.

ValueObject 클래스에서 Enum[ ] 리스트가 포함되어 있는데, 이것때문에 추상클래스로 변화하여 문제가 발생함.

이에 관한 내용이 담긴 링크
https://social.msdn.microsoft.com/Forums/en-US/6551e338-747d-427b-b626-4232caffb74d/serialization-of-a-listltenumgt-in-c?forum=netfxremoting

 

따라서 직렬화/역직렬화의 대상이 되는 클래스가 추상클래스가 되지 않게하면 (enum을 사용하지 않으면) 해결됨

'Csharp' 카테고리의 다른 글

WPF - 프로그램 아이콘을 작업표시줄에서 숨기기  (0) 2019.08.11
WPF - 윈도우 배경을 불투명하게 설정  (0) 2019.08.11
WPF - 파일 탐색기  (0) 2019.08.05
C# - 코딩할 때 도움되는 자잘한 문법들  (2) 2019.08.05
C#/WPF - 문자열로 객체 접근하는 법에 대한 해답  (0) 2019.08.05
'Csharp' 카테고리의 다른 글
  • WPF - 프로그램 아이콘을 작업표시줄에서 숨기기
  • WPF - 윈도우 배경을 불투명하게 설정
  • WPF - 파일 탐색기
  • C# - 코딩할 때 도움되는 자잘한 문법들
sckwon770
sckwon770
sckwon770
sckwon770
sckwon770
전체
오늘
어제
  • 분류 전체보기 (58)
    • 🚀 Activity (6)
      • Project (5)
      • Experience (1)
    • 🤖 Backend (28)
      • Linux (1)
      • SpringBoot (15)
      • Database (7)
      • Web (2)
      • Cloud (2)
      • Test (1)
    • 🛠 개발자 (1)
      • 회고 (0)
      • 독서 (1)
    • 🔥 Algorithm (5)
      • 백준 (2)
      • 프로그래머스 (1)
      • PS (1)
    • 👾 CS (0)
    • Python (2)
      • Programming (0)
      • PS Skills (0)
    • Csharp (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SWAGGER
  • jacoco
  • Hibernate
  • JPA
  • ThreadPoolTaskExecutor
  • CS
  • java
  • springboot
  • ULID
  • SSH
  • 인덱스
  • TSID
  • C#
  • algorithm
  • 테스트
  • WPF
  • mysql
  • Python
  • 파이썬
  • 리뷰메이트

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
sckwon770
C# - 역직렬화 도중 생길 수 있는 오류 (추상 클래스를 만들 수 없습니다)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.