我有一个带有几个依赖项的基类:
public abstract class ViewModel
{
private readonly ILoggingService loggingService;
public ViewModel(
ILoggingService loggingService,
...)
{
this.loggingService = loggingService;
...
}
}
在我的派生类中,我不想重复所有这个基类构造函数的参数,所以我做了这个:
public abstract class ViewModel
{
private readonly IUnityContainer container;
private ILoggingService loggingService;
...
public ViewModel(IUnityContainer container)
{
this.container = container;
}
public ILoggingService LoggingService
{
get
{
if (this.loggingService == null)
{
this.loggingService = this.container.Resolve<IUnityContainer>();
}
return this.loggingService;
}
}
...
}
现在我的派生类只需要将一件事传递给我的基类构造函数。我还有一个好处,就是只有在需要时才解决我的依赖关系。
然而,我后来得知传递 IOC 容器是一个不好的主意。考虑到许多服务已经被注册为单例模式,最好的替代设计模式是什么?