我有限定了文件名的XML文件的字符串属性。当用户输入该文件名到属性,我有设定器设定“文件名=值”来填充从XML文件中的数据的DataTable,使其显示在设计后调用parseXml()函数立刻。出于某种原因,当我在属性setter调用此函数,二传手结束了两次每次我更改属性,每次获取调用,与第二次是一个空字符串,它会导致错误。为什么要这样做呢?

public String FileName
{
    get { return fileName; }
    set 
    {
        fileName = value;
        parseXmlFile();
    }
}
有帮助吗?

解决方案

简短的回答:不应该。 更多有用的:也许你会第二次调用自己呢?设定于设定器,它被称为第二时间调试器,检查调用堆栈。

其他提示

我最初的猜测是,东西parseXml()再次调用一个二传手。如果删除调用parseXml()会发生什么?你尝试过调试和步进通过代码,因为它正在运行,看看究竟是什么调用二传手第二次?

如果您涂上filename = value;断点,打它,什么是调用堆栈窗口告诉你?

作为一个完整的一边,你遇到的问题,把昂贵的IO操作属性setter的背后,是有点偏离失衡。

如果你想打开一个文件,并解析东西,等它会更好,有适当命名的一个单独的方法,它在最后的IO和设置该属性(文件名)时,该方法成功地完成了工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top