And*_*rey 10 c# serialization debuggervisualizer visual-studio-2008
我正在尝试创建一个调试器可视化器,它将显示任何控件层次结构Control.它已经完成,但我得到了异常"类型未标记为可序列化".
我该如何克服这个问题?Control是.NET Windows Forms框架类型,我无法将其标记为可序列化.
Joã*_*elo 19
您还需要实现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!"));
}
}
Run Code Online (Sandbox Code Playgroud)
您还需要使用适当的方式注册可视化工具VisualizarObjectSource,对于此示例,可能是这样的:
[assembly: DebuggerVisualizer(
typeof(ControlVisualizer),
typeof(ControlVisualizerObjectSource),
Target = typeof(System.Windows.Forms.Control),
Description = "Control Visualizer")]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2614 次 |
| 最近记录: |