VS2010调试怪异

时间:2013-12-16 23:14:16

标签: visual-studio-2010 debugging serialization resharper

我已经在另一篇文章中发布了有关此问题的详细信息(但该帖子的重点是我正在尝试调试的另一个问题)...另一篇文章在这里:XmlSerializer.Deserialize for a sub class (not an array)

简而言之,以下是正在发生的事情:

我正在使用XmlSerializer.Deserialize()从xml文件反序列化到C#中的类。

如果我看一下Deserialize函数创建的对象,它会告诉我其中的一个对象是null,如果我然后将其序列化回一个xml文件,它会带来空值。

但是,如果我在反序列化后不查看对象,只需继续序列化回XML,那么所有的值都在那里并且Serialize正确。

所以看起来调试器正在调整我的对象的值,或者将它们全部写回null。

我已经尝试更改对象的无参数构造函数以将默认值写入属性,但调试器中的结果仍然为null(因此它不会像我怀疑的那样重新实例化对象)。

Deserializer对于除此之外的所有其他对象(它比XML中的所有其他对象深一层)工作正常,但在类层次结构中它与其他对象处于同一级别。我试过移动它在类层次结构中更深层次,但这没有什么区别。

我确定这个问题与Visual Studio调试器有关,而不是Deserializer,但我不知道如何验证这一点。有没有人有任何想法,或者在VS之前看过这样的事情?

我想我今天可能会尝试在不同的机器上进行调试 - 也许这与我的环境有关。 Resharper也许?非常奇怪......任何其他建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

啊哈哈哈......我是个傻瓜!如果一个同事和我一起经历这个问题,我们发现了一些非常愚蠢的事情,那就是:

public string ToString()
{
    Name = null;
    OfficeName = null;
    Address1 = null;
    Address2 = null;
    City = null;
    State = null;
    Postcode = null;
    Phone = null;
    Banner = null;
    Logo = null;

    StringBuilder sb = new StringBuilder();
    sb.Append(String.Format("Name:{0} / OfficeName: {1} / Address1: {2} / Address2: {3} / City: {4} / State: {5} / Postcode: {6} / Phone: {7} / Banner: {8} / Logo: {9}",
        Name, OfficeName, Address1, Address2, City, State, Postcode, Phone, Banner, Logo));
    return sb.ToString();
}

所以每当我看一下调试器中的对象时,它就会调用我的ToString()覆盖,然后覆盖所有的值。

我不觉得羞怯。 LOL