一般问题-我知道使用DI容器时应避免使用静态类,但是在我正在从事的项目中,静态类之一是我无法避免的约束。我正在向该静态类添加方法,并且需要能够注入由DI容器创建的服务。一种方法是向容器添加静态访问,但是我认为这是一种反模式。我想知道是否有一种更优雅的方式将服务注入静态方法。
特定问题-我正在开发WPF附加属性,并且在change回调中,我需要获取使用Unity DI容器注册的服务的实例。我唯一想到的解决方案是在引导程序中添加一个静态属性,该属性将返回Unity容器。
public class Bootstrapper
{
public static UnityContainer Instance
{
get
{
return _container;
}
}
但是将容器存储在静态字段中感觉很不正确。
还有其他-更优雅的解决方案吗?