c# – 调试器可视化器和“类型未标记为可序列化”
发布时间:2020-12-15 07:39:18 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个调试器可视化器,显示任何控件的控制层次结构.已经完成,但是我收到了异常“Type not not as serializable”. 我该如何克服呢? Control是一个.NET Windows Forms框架类型,我不能将其标记为可序列化. 解决方法 您还需要实现一个 VisualizerO
我正在尝试创建一个调试器可视化器,显示任何控件的控制层次结构.已经完成,但是我收到了异常“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")] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |