4

すべてのオブジェクトで視覚化を実行できる 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());
        }
    }
}
}

IntelliJ を使用していた元 Java プログラマーとして、特定の参照が指しているヒープ アドレスをデバッグ モードで確認できることに慣れています。これにより、2 つのオブジェクトが等しい参照であるかどうかを一目で確認できます。また、知っておくと役立つ情報が他にもいくつかありますが、それらを説明するには少し長くなる可能性があります。私がそれを機能させることができれば、最終的なコードを投稿します。

すべてのオブジェクトに対してビジュアライザーをアクティブにする方法を知っている人はいますか?

4

1 に答える 1