Unity DependencyAttribute适用于Controller,但不适用于FilterAttribute
本文关键字:适用于 不适用 FilterAttribute Controller DependencyAttribute Unity | 更新日期: 2023-09-27 18:15:40
我已经在我的WebAPI项目中设置了Unity,当我在我的ApiControllers之一中使用DependencyAttribute
时,我正在正确地注入对象。我现在正试图在ActionFilterAttribute
中使用完全相同的方法,但它没有解析(解析为null)。
解析为null:
public class ValidateEntryAttribute : ActionFilterAttribute
{
[Dependency]
internal ApplicationUserManager UserManager { get; set; }
// ...
}
,它解析为对象的一个实例:
public class LayoutController : BaseApiController
{
[Dependency]
internal ApplicationUserManager UserManager { get; set; }
}
和我的UnityConfig看起来像这样:
container.RegisterType<IUserStore<ApplicationUser, int>, ApplicationUserStore>();
container.RegisterType<ApplicationUserManager>();
我错过了什么?
你可以改变你的方法来设计过滤器,使他们被动,然后使用真正的依赖注入(构造函数注入)的动作过滤器被设计为读取他们,如在这个IActionFilter
的例子或在这个AuthorizeAttribute
的例子中所示。
或者,您可以像这里所示的那样破解框架,以获得对动作过滤器属性的属性注入。但是这样你就被属性注入和随之而来的所有缺点所困住了。