首页 > 解决方案 > ASP.NET Web 应用程序中的工具栏:单例方法总是返回 null

问题描述

我在母版页中使用工具栏作为用户控件。

通过单例方法(见下文)初始化工具栏时,GetInstance()总是返回空工具栏。

代码:

Toolbar uc = (BaseClass.GetInstance()).toolBar;

public class BaseClass
{
    private static BaseClass instance;
    public Toolbar toolBar;

    public static BaseClass GetInstance()
    {
        if (instance == null)
        {
            instance = new BaseClass();
        }

        return instance;
    }
}

为什么GetInstance()总是返回一个空工具栏?

标签: asp.net-mvc

解决方案


您不会为工具栏公共字段实例化对象。从哪里提取代码或如何实例化都没有关系。如果在您调用它时没有实例化它(并且它是一个引用类型),您将返回 null。显然,由于某种原因,您没有做到这一点。

以下是调整后的代码以说明修复它的方法。但是如果你在外部将一个实例注入你的单例,那么你必须确保你的代码可以处理如果它返回 null..

public class BaseClass
{
    private static BaseClass instance;
    public Toolbar toolBar;

    public static BaseClass GetInstance()
    {
        if (instance == null)
        {
            instance = new BaseClass();
            instance.toolBar = new Toolbar(); // or however you instantiate toolbar.
        }

        return instance;
    }
}

您提供的代码片段有很多事情困扰着我(例如,您的单例不是线程安全的并且您直接公开工具栏字段),但上面可能是您的代码不起作用的原因..


推荐阅读