c# – 调试器可视化器和“类型未标记为可序列化”

c# – 调试器可视化器和“类型未标记为可序列化”,第1张

概述我正在尝试创建一个调试器可视化器,显示任何控件的控制层次结构.已经完成,但是我收到了异常“Type not not as serializable”. 我该如何克服呢? Control是一个.NET Windows Forms框架类型,我不能将其标记为可序列化. 您还需要实现一个 VisualizerObjectSource来执行自定义序列化. 例: public class ControlVis 我正在尝试创建一个调试器可视化器,显示任何控件的控制层次结构.已经完成,但是我收到了异常“Type not not as serializable”.

我该如何克服呢? Control是一个.NET Windows Forms框架类型,我不能将其标记为可序列化.

解决方法 您还需要实现一个 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")]
总结

以上是内存溢出为你收集整理的c# – 调试器可视化器和“类型未标记为可序列化”全部内容,希望文章能够帮你解决c# – 调试器可视化器和“类型未标记为可序列化”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1256168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存