C# 是否可以将服务注入到单例类c中#

C# 是否可以将服务注入到单例类c中#,c#,.net,winforms,dependency-injection,C#,.net,Winforms,Dependency Injection,我想知道将服务注入singleton类的正确方法是什么(例如,通过使用NInject框架) 单例代码实际上在做什么——它在应用程序上下文中运行windows窗体 public class FrontController { private static volatile FrontController _instance; private static readonly object syncRoot = new Object(); private ControlsCon

我想知道将服务注入singleton类的正确方法是什么(例如,通过使用NInject框架)

单例代码实际上在做什么——它在应用程序上下文中运行windows窗体

public class FrontController
{
    private static volatile FrontController _instance;
    private static readonly object syncRoot = new Object();
    private ControlsContainer _controlsContainer;

    private FrontController() { }

    public static FrontController Instance
    {
        get
        {
            if (_instance == null)
            {
                lock (syncRoot)
                {
                    if (_instance == null)
                    {
                        _instance = new FrontController();
                    }

                }
            }
            return _instance;
        }
    }

    public void StartApplication()
    {
        _controlsContainer = new ControlsContainer();
        Application.Run(_controlsContainer);
    }

    public void EndApplication()
    {
        //throw new NotImplementedException();
    }

    internal void Synchronize()
    {
        ISymantecService<ClientModel> service =
            new SymantecService<ClientModel>(new CustomerRepository<ClientModel>());

        service.Synchronize();
    }
}
以及

internal void Synchronize()
{
    ISymantecService<ClientModel> service =
            new SymantecService<ClientModel>(new CustomerRepository<ClientModel>());

    quickBookservice.Synchronize();
}
内部空同步()
{
ISymantecService服务=
新的赛门铁克服务(新的CustomerRepository());
quickBookservice.Synchronize();
}

是否有任何方法可以以线程安全的方式将ISymantecService和ICCustomerRepository注入此类中。

这听起来是个坏主意。如果您使用某种依赖项注入,请将其作为实例类,并告诉容器使用singleton的生存期机制。@Yuval您能澄清为什么这是个坏主意吗?除了事实上,我认为单例是一个巨大的可变反模式,你将如何传递这些依赖关系?任何尝试都将是一个可怕的黑客。实际上这是我的问题。无论哪种方式,我都必须弄清楚如何在win forms技术上应用依赖注入-这个单例是我们在win forms技术上应用的MVC路径的控制器.
internal void Synchronize()
{
    ISymantecService<ClientModel> service =
            new SymantecService<ClientModel>(new CustomerRepository<ClientModel>());

    quickBookservice.Synchronize();
}