2009-12-15 4 views
7

나는 자신을 합리적으로 경험 한 .NET 개발자로 생각하지만 System.ComponentModel 네임 스페이스에서 형식을 직접 사용한 적이 거의 없습니다. (몇 가지 맞춤 속성을 구현하고 리플렉션을 통해이를 소비했습니다.)System.ComponentModel 네임 스페이스 사용

구성 요소, 컨테이너, PropertyDescriptor, TypeDescriptor, License 및 TypeConverter와 같은 유형이 어떤 종류의 시나리오에서 가장 유용합니까?

Visual Studio에서 사용할 수있는 "디자이너"에 대해 이야기 할 때 종종 System.ComponentModel을 언급 한 적이 있습니다.

예를 들어 멋진 비주얼 디자이너 (예 : 사용자 정의 속성 등)로 사용자 정의 컨트롤을 작성하려는 경우에만이 유형이 유용합니까? 아니면 좀 더 일반적인 코드로 사용할 수도 있습니까?

답변

2

당신처럼, 난 단지 (모든 System.Windows.Forms.ControlComponent 등에서 유래) 이미 파생 된 형태로 간접적를 나열 특정 클래스 (Component, Container 등), 즉 사용했습니다. 그래서 거기에 더 할 일이 없습니다. 맞춤 컨트롤에 속성을 추가 할 때 대부분 거의 항상 DefaultValueAttribute, DesignerSerializationVisibilityAttribute 및 기타 *Attribute 클래스를 사용합니다. 그러나 그것은 꽤 흔한 일이며 아마도 당신의 질문이 무엇이 었는지는 아닙니다.

는 지금까지 네임 스페이스의 나머지 부분으로, 나는 비동기 처리가 많이 필요한하고 다음 중 자주 사용하게 한 :

  • AsyncOperation
  • AsyncOperationManager
  • ProgressChangedEventHandler/ProgressChangedEventArgs
  • RunWorkerCompletedEventHandler/RunWorkerCompletedEventArgs
+0

비동기 처리 실제로 비동기 프로그래밍 모델을 사용했습니다. 대리자 및 BeginInvoke(), EndInvoke(). AsyncOperation 등은 어떻게 다른가요? – Ash

+0

비동기 이벤트를 노출하는 클래스를 만들 때 일반적으로 AsyncOperation 등을 사용합니다. 즉, 소비자가 아닌 비동기 이벤트 공급자입니다. DoWorkAsync() 및 CancelAsync() 메서드 및 DoWorkCompleted 및 DoWorkProgressUpdated 이벤트를 사용하여 클래스를 만드는 경우 이러한 이벤트를 사용하여 이벤트가 올바른 스레드에서 호출되는지 확인할 수 있습니다. –