我正在编写自己的调试器可视化工具。目前已经可以将数据展示到可视化工具中。
现在我要添加更多代码以增强可读性:
现在我要添加更多代码以增强可读性:
public class MyVisualiserObjectSource : VisualizerObjectSource
{
public override void GetData(object target, Stream outgoingData)
{
string data= target as string;
var writer = new StreamWriter(outgoingData);
writer.Write(data);
writer.Flush();
}
}
public class MyVirtualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
var streamReader = new StreamReader(objectProvider.GetData());
string data = streamReader.ReadToEnd();
using (var form = new MyVirtualizerForm(data))
{
windowService.ShowDialog(form);
}
}
}
这里的字符串被传递到可视化工具中并显示我的自定义表单。它有效。 但现在我想将修改后的数据从表单传回变量。
我该怎么做?
编辑:
我发现我需要重写VisualizerObjectSource
中的TransferData
方法。但是在MSDN中没有关于如何正确实现此方法的详细信息。
有人能帮我吗?
编辑2:
我使用IL-Spy查看了TransferData
方法的内容。它抛出一个异常。
所以我重写了这个方法。但仍然无法正常工作。在incomingData
中是来自Form
的修改后的字符串。但我没有将这个值返回到变量中 :(
public class StringVisualiserObjectSource : VisualizerObjectSource
{
public override void GetData(object target, Stream outgoingData)
{
var data = target as string;
var writer = new StreamWriter(outgoingData);
writer.Write(data);
writer.Flush();
}
public override void TransferData(object target, Stream incomingData, Stream outgoingData)
{
incomingData.CopyTo(outgoingData);
}
}