从派生类调试视图中删除Base引用

时间:2016-09-21 08:27:11

标签: c# inheritance

我有两个类,一个继承自另一个

public class A
{
    public string prop1 { get; set; }
    public string prop2 { get; set; }
    public string prop3 { get; set; }
}

public class B : A
{
    public string prop4 { get; set; }
}

现在我创建一个B类列表并将其转换为类B

List<B> BList = new List<B>();
BList = new List<B>() { new B() { prop1 = "1", prop2 = "2", prop3 = "3", prop4 = "4" } };
List<A> AList = BList.Cast<A>().ToList();

但是当我调试时,仍然有对B类的引用: enter image description here

如何删除/避免从基类中显示属性?

1 个答案:

答案 0 :(得分:1)

您无法删除它,但可以在调试器中以不同方式显示它。 使用调试器类型代理documented here以您喜欢的方式在调试器中显示类。列表和词典以这种方式完成,因此您可以使用反编译器(如ILSpy)查看源代码。

例如:

proc make-me-a-dialog {}
    global waiting

    toplevel .dialog_TC
    # ...
    add_entry { something ... }
    # ...

    set dlg .dialog_TC
    bind $dlg <Return> [list set waiting($dlg) 1]
    bind $dlg <Escape> [list set waiting($dlg) 0]
    # Trapping a window manager message; slightly different to normal events for historical reasons
    wm protocol $dlg WM_DELETE_WINDOW [list set waiting($dlg) 0]

    vwait waiting($dlg)
    if {waiting($dlg)} {
        return $ValueIndicatingOK
    } else {
        return $ValueIndicatingCancel
    }
}

我认为应该这样做,但我还没有测试过。