c# - Unity DependencyAttribute 适用于 Controller 但不适用于 FilterAttribute

标签 c# asp.net asp.net-web-api dependency-injection unity-container

<分区>

我已经在我的 WebAPI 项目中设置了 Unity,并且在我的一个 ApiController 中使用 DependencyAttribute 时我正在正确地注入(inject)对象。我现在尝试在 ActionFilterAttribute 中使用完全相同的方法,但它没有解析(解析为 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>();

我错过了什么?

最佳答案

您可以改变设计过滤器的方法来制作它们 passive然后在旨在读取它们的操作过滤器上使用真正的依赖注入(inject)(构造函数注入(inject)),如 this IActionFilter example 所示。或在 this AuthorizeAttribute example .

或者,您可以破解框架,如图所示 here获取 Action 过滤器属性的属性注入(inject)。但是然后你就陷入了属性注入(inject)和所有 downsides 的困境。随之而来。

关于c# - Unity DependencyAttribute 适用于 Controller 但不适用于 FilterAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32898304/

相关文章:

c# - EntitySet System.InvalidOperationException - "the entity type is not part of the model for the current context"

c# - Page.IsValid 和 args.IsValid 之间的关系是什么

javascript - 在弹出的 asp.net 中显示数据列表的结果

c# - Silverlight 媒体播放器位置问题

c# - 如何调用启用 SSL 的 Web Api?

c# - 尽管指定了 NullValueHandling,但使用 Json.NET 和 Web API 序列化为 JSON,可空日期被省略

c# - 等效于 Java 中的 C# 关键字 'as'

c# - 在 Ms 图表控件中使用对数刻度

c# - 更改 Microsoft.Owin.Testing.TestServer 的 HttpClient 上的超时没有效果

c# - 从父列表创建子列表