2012-05-03 2 views
0

나는 사용자 정의 컨트롤이 있습니다.속성 serializeable 오류가 없습니다

public partial class UserControl1 : UserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 
    } 

    public List<Person> People 
    { 
     get 
     { 
      return new List<Person>(); 
     } 
     set 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 

이 컨트롤을 Form으로 끌면 직렬화 오류가 발생합니다. 컨트롤을 삭제하거나 처음으로 컨트롤을 드래그하는 경우에 따라 오류가 변경됩니다. 상수는 Person을 serialize 할 수있게 만들면 오류가 사라진다는 것입니다. 요소를 양식에 놓을 때 오류가 발생하는 이유는 무엇입니까? 일반적인 해결 방법은 무엇입니까?

+0

디자이너에게 "비 속성"이라고 말할 수 있다고 생각합니다. –

답변

3

비주얼 스튜디오는 UserControl을 표시하기 위해 실제로는 designer serialization을 수행합니다. Person 객체가 직렬화되지 않기 때문에 오류가 발생합니다. 디자인 타임 serialization이이를 무시할 수 있도록 serializable을 만들거나 속성을 표시 할 수 있습니다 (아래 참조).

디자이너에 컨트롤을 설치하는 동안 속성을 호출하지 않도록 속성을 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]으로 표시 할 수 있습니다.

숨김은 serializer가 속성 값을 serialize하지 않아야 함을 지정합니다. 이 정적 필드는 읽기 전용입니다.

관련 문제