首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DebugVisualizer,圆形参考

DebugVisualizer,圆形参考
EN

Stack Overflow用户
提问于 2015-11-11 13:29:10
回答 1查看 54关注 0票数 0

我面临的问题可能很愚蠢,但我从来没有遇到过,所以我想我需要一些帮助。我正在学习如何使用调试可视化器。我已经创建了一个:位于DebuggerSide.cs命名空间中的CarGarageVisualizer

在调试CarGarage<T>实例时,我希望在这个可视化工具中看到它的类型,因此我向该类添加了以下属性:

代码语言:javascript
复制
    [DebuggerVisualizer(typeof(CarGarageVisualizer.DebuggerSide))]
    [Serializable]
    public class CarGarage<T>:IEnumerable<T>
        where T : Car,new()
    {
    ...
    }

现在,要添加第一个属性,我需要添加对包含CarGarageVisualizer类的DebuggerSide的引用。没关系。但现在,在我的DebuggerSide的overriden方法Show()中,我希望显式地将从objectProvider参数获得的对象转换为CarGarage<T>类型。但要做到这一点,我需要引用包含这个定义的CarGarageLibrary。正如我所说的那样,我不能这样做,因为我得到了关于递归引用的错误。

从其他关于这个问题的帖子来看,我知道这是一种糟糕的做法。但是,我不想将CarGarage<T>类复制到Visualizer命名空间(这将解决问题,但我不确定这是否是正确的做法),除非没有更好的选择。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 14:57:19

您可以使用DebuggerVisualizerAttribute 构造函数重载,它接受包含可视化器的完全限定类型名称string,如下所示

代码语言:javascript
复制
public static class MyVisualizers
{
    public const string AssemblyRef = @"MyVisualizers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
}

[DebuggerVisualizer("MyVisualizersNamespace.CarGarageVisualizer+DebuggerSide, " + MyVisualizers.AssemblyRef)]
[Serializable]
public class CarGarage<T>:IEnumerable<T>
    where T : Car,new()
{
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33651584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档