我们在我们的 asp.net web api2 中使用 Microsoft.Extensions.DependencyInjection 进行依赖注入(inject)。
对于像日志这样的横切关注点,我们认为应该考虑面向方面的编程,在上面的 di 中找不到任何支持。
其他 DI,如 caSTLe、Unity 和 ninject,在查看他们的基准后选择退出。
有没有办法使用其他 di 框架的注入(inject)器,如城堡动态代理并将其与 Microsoft.Extensions.DependencyInjection 一起使用?
也欢迎任何与 IL 编织框架相关的建议。
PostSharp 的考虑被排除在外,因为它不是免费的。
最佳答案
Decor.NET是 Castle.Core
的包装器动态代理,旨在简化方法修饰。
它与 DI 容器无关,但与 Microsoft 的 DI 集成,可在 Decor.Extensions.Microsoft.DependencyInjection
中获得NuGet 包。
public class YourDecorator : IDecorator
{
public SomeDependency SomeDependency { get; }
public YourDecorator(SomeDependency someDependency) // Supports DI.
{
SomeDependency = someDependency;
}
public async Task OnInvoke(Call call)
{
...
await call.Next();
...
}
}
[Decorate(typeof(YourDecorator))]
virtual void SomeMethod() // << has to be overridable (can come from an interface)
{
...
}
services.AddDecor()
.AddTransient<YourDecorator>()
.AddScoped<YourService>().Decorated();
您可以在此.Net Fiddle 中玩耍.
披露:我是这个包的作者。
关于c# - 带有 Microsoft.Extensions.DependencyInjection 和 asp.net web api 2 的拦截器,用于横切关注点,例如日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51226131/