2011-06-28 15 views
5

Herhangi bir koleksiyonu (ICollection, ICollection<T>) görselleştirmek için kılavuzlu bir form oluşturdum.Herhangi bir ICollection ve ICollection <T> türleri için Debugger görselleştiricisi

Bundan sonra (Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer gelen devralır) ayıklayıcı görselleştirici sınıfını yarattı.

visualizer propertly yüklü

(I System.Collections.ArrayList sınıfa üzerinde denedim).

Ancak, görselleştiriciyi herhangi bir ICollection/ICollection<T> türüne genelleştirmekle ilgili bir sorunum var.

Ben niteliğini belirtilen:

[assembly: DebuggerVisualizer(typeof(DebugerSide), typeof(VisualizerObjectSource), Target = typeof(System.Collections.Generic.ICollection<>), Description = "Collection visualizer")] 
[assembly: DebuggerVisualizer(typeof(DebugerSide), typeof(VisualizerObjectSource), Target = typeof(System.Collections.ICollection), Description = "Collection visualizer")] 

ama visualizer debug VS tarafından sunulan değildir.

Ben exactl sınıf adını belirtirseniz, görselleştirici VS. mevcuttur Yolum var mı, niyetimi nasıl gerçekleştireceğim yoksa hiçbir yolu yoktur, nasıl başarabilirim?

Teşekkürler!

cevap

9

Sana outlined in this question. geçici çözüm İzle penceresinde yazmak için daha sonra System.WeakReference için Visualizer oluşturmak ve etmektir

"Yeni WeakReference, görüntüleyici mimarisinin aynı sınırlama tökezledi (myCollectionVariable) düşünmek "ve sonra hata ayıklama görselleştiricinizi zayıf bir şekilde açabilirsiniz. Hata ayıklama görselleştiricinizin içinde, değişkeninizin türünün tam olarak ne olduğunu bulmak için yansıma kullanabilir ve istediğiniz şeyi yapabilirsiniz.

da this bakınız.

+0

teşekkür ederiz! Geçici çözüm biraz delice görünüyor. Ama bu sadece bir şekilde, amacına nasıl ulaşacağım olacak. – TcKs

+0

Sorun şu ki, genel bir sınıf için bir görselleştirici oluşturamıyorsunuz, yoksa aynı görselleştiriciyi 2 "farklı" tür için kaydedemiyorsunuz? –

+3

Hata ayıklayıcı görselleştiriciler, yalnızca sınıflarda (System.Array ve System.Object dışında) arabirim türleri üzerinde çalışmayacaktır. Belirli bir sınıf belirtmelisiniz. Bir jenerik sınıfı için bir görselleştirici oluşturabilirsiniz, ancak destek jenerik türlerini açmak sınırlıdır - En belgelendiği gibi: http://msdn.microsoft.com/en-us/library/e2zc529c.aspx –

0

Bu iyi çalışacaktır sanırım.

[assembly: DebuggerVisualizer(typeof(DebugerSide), typeof(VisualizerObjectSource), typeof(Collection), Description = "Collection visualizer")]