Я пытаюсь создать визуализатор отладки C #, который может выполнять визуализацию для всех объектов. Я не могу получить атрибут сборки (над пространством имен), чтобы связать этот визуализатор с System.Object, как я мог с другими объектами в системе. Я долго искал, но не нашел ни одного примера / обсуждения о создании визуализатора для всех объектов. Вот код, который я пытаюсь получить, он работает достаточно хорошо, когда привязан к String или Int32, но не к объекту или объекту.
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(Visualizers.ObjectVisualizer), typeof(Visualizers.RawObjectScource),
Target = typeof(object), Description = "Object Visualizer")]
namespace Visualizers
{
public class ObjectVisualizer : DialogDebuggerVisualizer
{
override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
Console.Out.WriteLine("InShow");
MessageBox.Show(objectProvider.GetObject().ToString());
}
}
// handle any object, doesn't require that it's Serializable
public class RawObjectScource : VisualizerObjectSource
{
public override void GetData(object target, Stream outgoingData)
{
if (target != null)
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(outgoingData, target.ToString());
}
}
}
}
Будучи бывшим Java-программистом, который использовал IntelliJ, я привык видеть в режиме отладки, на какой адрес кучи указывает конкретная ссылка. Это позволяет сразу увидеть, равны ли два объекта. Кроме того, есть несколько других вещей, которые было бы полезно узнать, но они могут быть немного длинными для объяснения. Если я смогу заставить его работать, я опубликую окончательный код.
Так кто-нибудь знает, как заставить визуализатор быть активным для всех объектов?