我有一个ILogger接口,并且Logger类(单例)实现了ILogger接口。我想使用unity容器注册此依赖项。你能帮我一下吗?
public class Logger: ILogger
{
private static readonly Lazy<Logger> instance = new Lazy<Logger>(()=> new Logger());
public static Logger Instance{get{return instance.Value;}}
private Logger(){}
public void LogEvent(){}
}
答案 0 :(得分:1)
首先,我看到您的代码无法编译。您错过的实例类型:
...
public static ILogger Instance {get{return instance.Value;}}
...
据我所知,您可以在启动类中尝试下一个:
var container = new UnityContainer();
var logger = Logger.Instance;
container.RegisterInstance<ILogger>(logger, new ContainerControlledLifetimeManager());
container.Resolve<ILogger>
返回您的实例并将ILogger
注入构造函数中,您应该获取记录器实例
ContainerControlledLifetimeManager
解析已注册类型的单例实例,其范围仅限于容器的生存期。
不要忘记将UnityContainer设置为项目中的默认依赖项解析器。