2009-05-01 2 views
3

크기 구조체를 반환하는 "mySize"속성이있는 Windows.Forms 구성 요소가 있습니다. 내 의도는 mySize가 명시 적으로 설정되지 않은 경우 구성 요소의 크기에 따라 자동으로 반환 된 mySize를 계산하도록하는 것이 었습니다.이 경우 mySize의 설정 값을 반환합니다. 은 불행하게도, 지금은 형태로 구성 요소를 삽입 오전, Windows Forms 디자이너 명시 적으로 생성하고 바로 나를 속이고있는 mySize 속성에 대한 값을 설정을 시작하기로 결정했다.비 상수 유형의 속성에 대한 DefaultValue 설정?

그래서 DefaultValue를 설정해야 Designer가 사라져 버릴 수 있습니다.

System.ComponentModel.DefaultValue를 다루는 답변을 읽었으므로 생성자에서 속성의 값을 수동으로 설정해야한다는 것을 알고 있지만 답변과 설명서는 DefaultValue 거짓의, 상수.

크기 구조체가 상수가 아니므로 크기가 상수가 아니기 때문에 형식 크기의 속성에 대한 크기를 DefaultValue로 설정할 수 없다는 사실을 VB 컴파일러가 깨닫고 있습니다.

이것은 내 머리를 아프게합니다.

속성을 사용하는 대신 getMySize 및 setMySize 메서드를 사용하여 문제를 해결할 수 있지만 실제로 크기에 대한 기본 속성을 설정하는 방법이 있는지 알고 싶습니다.

NB : mySize를 사용하여 Size 속성 (DefaultValue가 150x150이므로 SOMETHING이 Sizes에 DefaultValues를 설정할 수있는 것 같습니다)을 재정의하려는 다소 힘든 시도로 사용하지 않습니다. mySize는 클래스에서 요구되는 일부 크기 값입니다.

답변

5

대신의 DefaultValue 속성을 적용하는 다음 두 가지 방법을 쓰기 : 값이 코드에 직렬화 할 필요가있는 경우 ShouldSerializemySize에서

bool ShouldSerializemySize() { ... } 
void ResetmySize() { ... } 

는, true를 돌려줍니다. ResetmySize에서 속성을 기본값으로 다시 설정합니다.

구성 요소 디자이너는 자동 반사를 통해이 방법을 선택할 것입니다. 여기

더 많은 정보는 : http://msdn.microsoft.com/en-us/library/53b8022e(VS.71).aspx

+1

: XmlSerializer가도하지만, ShouldSerialize *를 사용합니다가 공공 인 경우에만. –

0

나는 this page에 설명 된 DefaultValue 생성자를 사용하여 제안 DefaultValue's MSDN page의 커뮤니티 콘텐츠 섹션에서 형 크기의 DEFAULTVALUE를 설정 주어진 구체적인 예는 실제로 거기 것으로 나타났습니다.

불행하게도 예를 들어 주어진 반면, 올바른이 작동하는지, MSDN 설명서 자연스럽게이 답변에 사람을 인도하지 않을 것이라고 나에게 보인다.

나는 (그의 대답은 적어도 의미의 어떤 종류를 만들기 때문에)이 질문에 대한 대답으로 albahari의 답변을 설정하고 완전성 '을 위해 여기 예를 떠날거야. 여담으로