3

誰かがこれを手伝ってくれることを願っています。それは私を夢中にさせています。

親オブジェクトから継承し、そのオブジェクトのメソッドの一部をオーバーライドするクラスがあります。オーバーライドの 1 つで関連するコードは次のようになります (正しく機能するコードは削除しました)。

    public override void Initialise()
    {
        if (Url != null)
        {
            _logger.LogInfo("Initialising for file " + Url);

            // call the base Initialise method
            try
            {
                base.Initialise();
            }
            catch (Exception ex)
            {
                _logger.LogError("Error on initialise : ", ex);
            }
      }
 }

ロガー オブジェクトは、アプリケーション ログ データベースに書き込みます。

コード内で初めてこのポイントに到達すると、初期化時にエラーがログに記録され、オブジェクト エラーのインスタンスに設定されていないオブジェクト参照が返されます。しかし、それ以上の情報、内部例外、行番号はありません。

そのベースがnullになる可能性がある方法があるかどうか疑問に思っていますか? それは奇妙でありそうにないように思えますが、なぜそれ以上の情報がないのか、そしてコードがそれ以上の情報を取得しようとする私のすべての試みに抵抗したのかを説明するのに途方に暮れています.

ライブサーバー上にあるため、ステップスルーできず、テストサーバーでエラーを再現できません. どこでどのように問題が発生しているかについて、より詳細な情報を入手する方法について誰かがアイデアを持っている場合は、深く感謝します.

乾杯、マット

4

1 に答える 1

5

あなたの質問への答えはノーです。Base は子クラスの前にインスタンス化されるため、null にすることはできません (特定の基本型コンストラクターを呼び出さない場合は、子クラスのコンストラクターが実行される直前に既定のコンストラクターが呼び出されます)。あなたのエラーはbase.Initialize()メソッドから来ています。

于 2012-12-18T11:47:47.257 に答える