Ich habe einen DebuggerVisualizer erstellt, um ein einfaches Bild einer abstrakten Puzzleklasse zu zeigen - das Problem ist, dass in meiner Testanwendung einfach ein Puzzle erstellt wird und TestShowVisualizer aufgerufen wird() Das Bild wird korrekt auf dem Bildschirm angezeigt. Allerdings, wenn das Projekt Debuggen und über die Variable schwebt gibt es keine Visualizer (oder Lupensymbol)DebuggerVisualizer wird nicht beim Debuggen angezeigt, arbeitet aber an der Testanwendung
public abstract class Puzzle
{
// Lots of properties and methods here //
public static Puzzle Load(StreamReader sr)
{
// Reads the stream reader and creates the correct derived class
}
public abstract Image GenerateNet();
}
[DebuggerVisualizer(typeof(PuzzleVisualizer), typeof(PuzzleVisualizerObjectSource), Description = "Image Visualizer", Target = typeof(Puzzle))]
public class PuzzleVisualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
var puz = Puzzle.Load(new StreamReader(objectProvider.GetData()));
var image = puz.GenerateNet();
var form = new Form
{
Text = $"Width: {image.Width}, Height: {image.Height}",
ClientSize = new Size(image.Width, image.Height),
FormBorderStyle = FormBorderStyle.FixedToolWindow
};
var pictureBox = new PictureBox
{
Image = image,
Parent = form,
Dock = DockStyle.Fill
};
windowService.ShowDialog(form);
}
public static void TestShowVisualizer(object objectToVisualize)
{
var visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(PuzzleVisualizer), typeof(PuzzleVisualizerObjectSource));
visualizerHost.ShowVisualizer();
}
}
Ich habe eine Testanwendung, die alle Beispiele für visualizers Herstellung zu verwenden:
public class Program
{
public static void Main(string[] args)
{
var p = new Cube222();
p.Setup();
PuzzleVisualizer.TestShowVisualizer(p);
return;
}
}
Die Visualizer funktioniert, wenn TestShowVisualizer() aufgerufen wird, aber nicht nur für das allgemeine Debugging.
Ich habe dafür gesorgt, dass die Visualizer-Klasse in ihrem eigenen DLL ist und dass dies auf C kopiert wird: \ Programme \ Microsoft Visual Studio \ 2017 \ Gemeinschaft \ Common7 \ Packages Debugger \ Visualizer \
Beliebig Ideen, was ich falsch mache?
Sie setzen das [Attribut] auf der falschen Klasse. Die Puzzle-Klasse braucht es, nicht die Visualizer-Klasse. –