폼의 메타 데이터에 대한 자리 표시 자로 디자인 된 C#에서 비 시각적 구성 요소를 만들었습니다.
구성 요소에는 사용자 지정 개체의 컬렉션 인 속성이 있습니다.이 개체는 Serializable로 표시되며 deserilizing을위한 serilizing 및 public constuctor의 GetObjectData를 구현합니다.
C#의 디자인 타임 serialization
양식의 resx 파일에서 컬렉션 저장을위한 이진 데이터를 생성하지만 일련 화 된 클래스를 변경할 때마다 디자이너 오류가 발생하고 resx 파일에서 데이터를 수동으로 삭제해야합니다. 이 데이터를 다시 작성하십시오.
I 클래스
try
{
_Name = info.GetString("Name");
}
catch (SerializationException)
{
this._Name = string.Empty;
}
에서 각 속성 주위에 try/catch 블록을 가지고 constructor에 변경 시도했지만 여전히 충돌합니다. 내가 얻은 마지막 오류는 IConvertible을 구현해야한다는 것이 었습니다.
디자이너가 사용할 수있는 을 적어도 볼 수 있기 때문에 XML 직렬화를 선호합니다.
직렬화를보다 안정적으로 만들고 변경에 대한 저항을 줄이는 방법이 있습니까?
편집 : 자세한 내용은 ... 더 나은 설명은 아마도
내가 Component에서 상속하는 클래스가
,이 규칙의 모음입니다 하나의 속성이 있습니다. RulesCollection은 Serializable로 표시되어야하며, 그렇지 않으면 멤버를 보유하지 않습니다.
Rules 클래스는 구성 요소 트레이에 표시를 중지하는 DesignTimeVisible (false) 특성이있는 구성 요소이기도하며이 Clas는 Serializable로 표시되지 않습니다.
컬렉션을 Serializable로 표시하면 resx 파일에 이진 데이터가 생성되고 (이상적이지는 않음) IDE에서 Rules 클래스가 Serializable이 아니라고보고합니다.
저는이 문제가 간단한 질문을 넘어서고 있다고 생각합니다. 그래서 나는 곧 그것을 닫을 것입니다.
누군가가 비슷한 도움이 될만한 비슷한 링크를 갖고 있다면.
또한이 방법은 또한에 .. [ToolboxItem (FALSE)] ... 이진 직렬화 된 데이터를 생성 플러스 컬렉션의 모든 오브젝트는 부품 트레이 – benPearce
되지 않도록 사용 트레이에 표시에 표시하는 것 같다 클래스. 나는 항상이 접근법을 사용하고 바이너리 데이터를 얻지 못한다. 그래서 당신은 그것을 강제로하는 일을해야합니다. 코드 스 니펫을 게시 할 수 있습니까? –