Cod*_*elp 1 c# dependency-injection autofac
我正在尝试使用AutoFac,并且所有示例都使用构造函数注入来显示它,这是一种建议的做法.没关系,但我想知道如何在无法进行构造函数注入的情况下使用它.例如,我想在我的应用程序中使用NLogger.
注册如下:
builder.RegisterType<NLogger>().As<ILogger>().SingleInstance();
Run Code Online (Sandbox Code Playgroud)
如何在不执行此操作的情况下使用NLogger:
public class ProductService : IProductService
{
private ILogger _logger;
public ProductService(ILogger logger)
{
this._logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
问候.
您可以使用Property Injection.
在你的课堂上你可以拥有
public class MyClass
{
public ILogger Logger { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和地图
builder.Register(c => new MyClass { Logger = c.Resolve<ILogger>() });
Run Code Online (Sandbox Code Playgroud)
尽管如此,构造函数注入是99%的情况.
如果您只想获得一个需要打电话的实例
var logger = container.Resolve<ILogger>();
Run Code Online (Sandbox Code Playgroud)
container你的AutoFac容器在哪里- 这可以从全局变量中提取 - 在ASP.NET MVC中(如果你正好使用它)你可以通过调用
var logger = DependencyResolver.Current.GetService<ILogger>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2817 次 |
| 最近记录: |