2009-12-15 26 views
7

Kendimi makul bir .NET geliştiricisi olarak kabul ediyorum ancak hemen hemen hiç System.ComponentModel ad alanında doğrudan kullanılan türleri yok. (Birkaç özel özniteliği uyguladım ve bunları yansıtma yoluyla tüketdim).System.ComponentModel ad alanı kullanımı

Bileşen, Kapsayıcı, PropertyDescriptor, TypeDescriptor, License ve TypeConverter gibi türlerde hangi tür senaryolar kullanılabilir?

Genellikle Visual Studio'da bulunanlar gibi "tasarımcılar" dan bahsederken System.ComponentModel'in bundan bahsettiğini gördüm.

Bu türler, örneğin, güzel görsel tasarımcılar (örn. Özel özellikler vb.) Ile özel bir denetim oluşturmak istediğinizde kullanışlıdırlar mı? Yoksa bunları daha genel kodlarda da kullanabilir miyim?

cevap

2

Senin gibi ben sadece (her System.Windows.Forms.Control, Component vb türemiştir) zaten türetilmiş formda dolaylı listelemek belirli sınıfları (Component, Container, vs.), yani kullandım. Bu yüzden eklemek için daha fazla bir şeyim yok. Özel denetimlere özellik eklerken, neredeyse her zaman DefaultValueAttribute, DesignerSerializationVisibilityAttribute ve diğer *Attribute sınıflarını kullanırım. Ama bu oldukça yaygın ve muhtemelen sorunuzun peşinde değil.

Bildiğim kadarıyla ad geri kalanı gibi, ben asenkron işleme bir sürü için ihtiyaç ve aşağıdakilerden sık faydalanmak gelmiş :

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

asenkron işlem aslında Async Programlama Modelini kullanmışımdır. delegeler ve BeginInvoke(), EndInvoke(). AsyncOperation vb. Nasıl farklıdır, biliyor musunuz? – Ash

+0

Zamanuyumsuz olayları açığa çıkaran bir sınıf oluştururken, genellikle AsyncOperation, vb. Kullanırsınız. Başka bir deyişle, zaman uyumsuz olayların sağlayıcısı olduğunuzda, tüketiciyi değil. DoWorkAsync() ve CancelAsync() yöntemleriyle bir sınıf ve DoWorkCompleted ve DoWorkProgressUpdated olayları oluşturursanız, olayların doğru iş parçacığı üzerinde çalıştırıldığından emin olmak için bunları kullanabilirsiniz. –