C#:在字符串属性设置器中调用方法问题

时间:2009-11-04 20:28:47

标签: c# file properties methods setter

我有一个字符串属性,用于定义xml文件的文件名。当用户将此文件名输入到属性中时,我在设置'fileName = value'后立即调用parseXml()函数,以使用XML文件中的数据填充dataTable,以便在设计器中显示。出于某种原因,当我在属性设置器中调用此函数时,每次更改属性时,setter最终会每次调用两次,第二次是空字符串,这会导致错误。为什么要这样做?

public String FileName
{
    get { return fileName; }
    set 
    {
        fileName = value;
        parseXmlFile();
    }
}

3 个答案:

答案 0 :(得分:9)

我最初的猜测是parseXml()中的某些内容再次调用该setter。如果删除对parseXml()的调用会发生什么?您是否尝试过调试并逐步执行代码,以查看第二次调用setter的确切内容?

如果你在filename = value;上打了一个断点并点击它,那么callstack窗口会显示什么?

答案 1 :(得分:4)

简短回答:不应该。 更有帮助:也许你自己做第二次电话?在setter上设置调试器,第二次调用它,检查调用堆栈。

答案 2 :(得分:0)

作为您所遇到的问题的一个完整之处,将昂贵的IO操作置于物业设置者后面是有点不对。

如果你想打开一个文件并解析东西等,最好有一个适当的单独方法来做IO,并在方法成功完成它的工作时设置这个属性(filename)。