需要在使用前调用"Initialize"方法的静态类 - 可以吗?

Vit*_*lyB 3 .net c#

在我的项目中,我有多个"服务"静态类,应该可以在整个项目中轻松访问,因此它们是静态的.但是,要初始化它们,我必须传递它们仅在启动时可用的数据,这导致代码类似于:

public static class VisualStudioEvents
{
    private static Data _data;

    public static void Initialize(Data data)
    {
        _data = data;
    }

    public static void Func()
    {
        AssertInitialized(_data);

        // Code of actual Func() goes here.
    }
}
Run Code Online (Sandbox Code Playgroud)

你觉得怎么样?这里应该应用不同的设计模式吗?或者这个设计可以接受吗?

谢谢!

Mar*_*ell 5

我对此非常满意.我所做的唯一改变就是将其强制执行一次:

    public static void Initialize(Data data)
    {
        if (data == null) throw new ArgumentNullException("data");
        if (Interlocked.CompareExchange(ref _data, data, null) != null)
        {
            throw new InvalidOperationException("Already initialized");
        }
    }
Run Code Online (Sandbox Code Playgroud)

哦 - 我猜Data也应该是不可改变的,以避免人们意外地改变配置.