c# 可以在覆盖对象中 base 为 null 吗?

Bob*_*way 3 c# null logging

希望有人可以提供帮助,这让我发疯。

我有一个从父对象继承的类,它覆盖了该对象的一些方法。覆盖之一中的相关代码如下所示(我已经删除了正确运行的代码):

    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);
            }
      }
 }
Run Code Online (Sandbox Code Playgroud)

记录器对象写入我们的应用程序日志数据库。

当它第一次到达代码中的这一点时,它会在初始化时记录错误,并给我一个未设置为对象错误实例的对象引用。但是没有进一步的信息,没有内部异常,也没有行号。

我想知道基数是否有可能为空?这看起来很奇怪而且不太可能,但我无法解释为什么没有进一步的信息以及为什么代码拒绝了我从中获取更多信息的所有尝试。

它在实时服务器上,所以我无法单步执行,也无法在测试服务器上复制错误。如果有人对我如何获得有关哪里以及如何出错的更多详细信息有任何想法,我们将不胜感激。

干杯,马特

Ser*_*kiy 5

你的问题的答案是否定的。Base 不能为空,因为它是在子类之前实例化的(如果不调用特定的基类型构造函数,则在执行子类构造函数之前调用默认的构造函数)。您的错误来自base.Initialize()方法。