2014-06-10 2 views
2

는 사용자 정의 개체는 회색으로, 그리고 확장되지 않습니다클래스를 수정하지 않고 속성 표에서 사용자 지정 개체를 확장 하시겠습니까? 기본적으로

enter image description here

나는 그것이 ExpandableObjectConverter를 사용하여이 확장하는 것이 가능 알고 있지만, 원래 클래스를 확장해야합니다.

원본 클래스를 수정할 수없는 경우 어떻게해야합니까? 속성 그리드 내에 사용자 지정 개체 확장을 처리하는 일반적인 방법이 있습니까?

+0

아마도 같은 ] (http://stackoverflow.com/questions/3068453/can-you-assign-a-typeconverter-without-a-typeconverterattribute)? – Mark

+0

이것은 아주 좋은 해결 방법입니다! 여전히 형식을 변환기와 수동으로 연결해야하지만 기본 확장 지원을 위해 각 형식 당 한 줄의 코드 만 있습니다. 이 보석을 찾아 주셔서 대단히 감사합니다! 최소한의 재현 가능한 예를 포함하여 무언가를 대답으로 게시 할 수 있습니다. 또는 중복 된 것으로 투표를 마감하십시오 (링크가이 작업의 상위 집합, 즉보다 일반적인 것으로 느껴짐). – Neolisk

답변

2

런타임시 ExpandableObjectConverterTypeConverterAttribute을 동적으로 추가 할 수 있습니다 (VB.NET).

Dim attr = New TypeConverterAttribute(GetType(ExpandableObjectConverter)) 
TypeDescriptor.AddAttributes(GetType(ExtensionDataObject), attr) 

확장 할 수있는 유형마다 AddAttribute이 필요합니다. 유형은 특정 네임 스페이스에있는 모든 경우에, 당신은 그들을 찾을 반사를 사용할 수 있습니다

Dim assm = Assembly.GetExecutingAssembly() ' or some other assembly 
For Each t In assm.GetTypes().Where(Function(x) x.Namespace = "InterestingTypes") 
    TypeDescriptor.AddAttributes(t, attr) 
Next 

(깨진 구문 강조 죄송합니다 - 내가 사용 했어야 C 번호를!)이 질문으로

+0

감사합니다. 구문 강조 표시가 수정되었습니다. +1하고 받아들입니다. – Neolisk

+0

@Neolisk 감사합니다. 언어를 지정하는 방법을 찾고 있었지만 찾지 못했습니다! – Mark

+0

언어 힌트라고합니다. http://meta.stackexchange.com/a/75019/216074 – Neolisk

관련 문제