2009-12-15 25 views
7

我認爲自己是一位經驗豐富的.NET開發人員,但我幾乎從未在System.ComponentModel命名空間中直接使用類型。 (我已經實現了一些自定義屬性並通過反射消耗它們)。System.ComponentModel命名空間的用法

在什麼樣的情況下,組件,容器,PropertyDescriptor,TypeDescriptor,License和TypeConverter等類型最有用?

我經常看到System.ComponentModel在談到「設計師」時提到,比如在Visual Studio中提供的那些設計器。

這些類型只在你想用自己的視覺設計器(例如自定義屬性等)構建一個自定義控件時纔有用嗎?或者我也可以在更一般的代碼中使用它們嗎?

回答

2

和你一樣,我只用你列出具體類(ComponentContainer等)間接地,即在已經衍生形式(每System.Windows.Forms.ControlComponent派生等)。所以我沒有更多的東西在那裏添加。向自定義控件添加屬性時,我幾乎總是使用許多DefaultValueAttributeDesignerSerializationVisibilityAttribute和其他*Attribute類。但這很常見,可能不是你的問題。

至於命名空間的休息,我都需要大量的異步處理,並頻繁使用下列內容:

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

For異步處理我實際上使用了異步編程模型,即。代表和BeginInvoke(),EndInvoke()。 AsyncOperation如何不同,你知道嗎? – Ash 2009-12-15 14:02:22

+0

在創建公開異步事件的類時,通常使用AsyncOperation等。換句話說,當您是異步事件的提供者時,而不是消費者。如果使用DoWorkAsync()和CancelAsync()方法以及DoWorkCompleted和DoWorkProgressUpdated事件創建類,則可以使用它們來確保在正確的線程上調用事件。 – 2009-12-15 14:05:36