C# 是否可以将服务注入到单例类c中#
我想知道将服务注入singleton类的正确方法是什么(例如,通过使用NInject框架) 单例代码实际上在做什么——它在应用程序上下文中运行windows窗体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
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();
}