我对Unity& amp; IoC一般&像往常一样,我很快陷入困境......
我已经为ASP.NET Web API Beta创建了一个授权过滤器属性。我现在需要将我的Authorizer注入Attribute中,因为这是一个属性,我不能简单地在构造函数中执行此public TestAuthAttribute(IAuthorizer Authorizer)
。
所以我决定创建一个用属性注入的[Dependency]属性修饰的公共属性,但是它没有被解析。
以下是代码:
public class TestAuthAttribute : AuthorizationFilterAttribute
{
[Dependency]
public IAuthorizer Authorizer { get; set; }
public TestAuthAttribute() {
...
}
private bool authorizeCore(HttpRequestMessage request)
{
if (Authorizer == null)
throw Error.ArgumentNull("Null Authorizer"); // <<<<< this is null
}
当控制器使用[TestAuth]进行修饰时,属性被触发但是Authorizer未解析,则为null)
我已将以下代码放入我的控制器&amp;授权人确实得到了解决......
[Dependency]
public IAuthorizer Authorizer { get; set; }
为什么我的AuthorizationFilterAttribute&amp;您将如何将Authorizer注入AuthorizationFilterAttribute?
答案 0 :(得分:0)
完全披露:我没有使用过Turbine。
话虽如此,我认为它可能会为您解决问题或者至少告诉您如何解决它。
他们在这里有一个Unity Nuget包:http://nuget.org/packages/MvcTurbine.Unity
您可以在此处找到有关其codeplex网站的更多详细信息:http://mvcturbine.codeplex.com/
希望有所帮助。
答案 1 :(得分:-1)
我使用Ninject用于类似目的。我确实引用了Ninject.Web.WebAPI,它可以很好地工作。
然而,这似乎不适用于MVC4 RC。