कस्टम सीरियलाइजेशन करने के लिए आपको VisualizerObjectSource को भी लागू करने की आवश्यकता होगी।
उदाहरण:
public class ControlVisualizerObjectSource : VisualizerObjectSource
{
public override void GetData(object target, Stream outgoingData)
{
var writer = new StreamWriter(outgoingData);
writer.WriteLine(((Control)target).Text);
writer.Flush();
}
}
public class ControlVisualizer : DialogDebuggerVisualizer
{
protected override void Show(
IDialogVisualizerService windowService,
IVisualizerObjectProvider objectProvider)
{
string text = new StreamReader(objectProvider.GetData()).ReadLine();
}
public static void TestShowVisualizer(object objectToVisualize)
{
var visualizerHost = new VisualizerDevelopmentHost(
objectToVisualize,
typeof(ControlVisualizer),
typeof(ControlVisualizerObjectSource));
visualizerHost.ShowVisualizer();
}
}
class Program
{
static void Main(string[] args)
{
ControlVisualizer.TestShowVisualizer(new Control("Hello World!"));
}
}
तुम भी विनियोजित VisualizarObjectSource
है, जो इस उदाहरण के लिए कुछ इस तरह हो सकता है के साथ विजुआलाइज़र रजिस्टर करने के लिए की आवश्यकता होगी:
[assembly: DebuggerVisualizer(
typeof(ControlVisualizer),
typeof(ControlVisualizerObjectSource),
Target = typeof(System.Windows.Forms.Control),
Description = "Control Visualizer")]
स्रोत
2010-06-02 17:56:06
आप को शामिल किया है [Serializable] कक्षा में विशेषता? इसके बिना आपकी कक्षा को क्रमबद्ध नहीं किया जा सकता है। – Justin
मैं .NET फ्रेमवर्क कक्षाओं के लिए एक डीबगर विज़ुअलाइज़र लिख रहा हूं, मैं कुछ भी – Andrey