1

xmlファイルのファイル名を定義する文字列プロパティがあります。ユーザーがこのファイル名をプロパティに入力すると、'fileName = value'を設定した直後にsetterがparseXml()関数を呼び出して、データテーブルにXMLファイルのデータを入力してデザイナーに表示します。何らかの理由で、プロパティセッターでこの関数呼び出しを行うと、プロパティを変更するたびにセッターが2回呼び出され、2回目は空の文字列であるためエラーが発生します。なぜこれをしているのですか?

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

3 に答える 3

9

私の最初の推測では、parseXml()の何かがそのセッターを再度呼び出していると思います。parseXml()の呼び出しを削除するとどうなりますか?実行中のコードをデバッグしてステップスルーし、2回目にセッターを正確に呼び出しているものを確認しましたか?

ブレークポイントfilename = value;を叩いてヒットした場合、コールスタックウィンドウには何が表示されますか?

于 2009-11-04T20:31:22.717 に答える
4

簡単な答え:すべきではありません。より役立つ:多分あなたはあなた自身で2番目の電話を引き起こしますか?セッターにデバッガーを設定し、2回目に呼び出されたときに、呼び出しスタックを調べます。

于 2009-11-04T20:33:08.510 に答える
0

あなたが抱えている問題を完全に脇に置いて、プロパティセッターの後ろに高価なIO操作を置くことは少しオフキルターです。

ファイルを開いて解析する場合などは、IOを実行し、メソッドが正常に作業を完了したときにこのプロパティ(ファイル名)を最後に設定する、適切な名前の別のメソッドを用意することをお勧めします。

于 2009-11-04T20:35:28.743 に答える