我一般&像往常一樣很新的統一&的IoC依賴注入到AuthorizationFilterAttribute
我已經創建了的ASP.NET Web的授權篩選器屬性,我趕緊讓自己陷入到困境...... API測試版。我現在需要將我的授權者注入到屬性中,但是由於這是一個屬性,我不能簡單地在我的構造函數中執行此public TestAuthAttribute(IAuthorizer Authorizer)
。
因此,我決定創建一個公共屬性裝飾屬性注入的[依賴]屬性,但它不會得到解決。
下面是代碼:
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]屬性被觸發,但授權人沒有解決,它爲空)
我已經把下面的在我的控制器&授權者的代碼不會得到解決......
[Dependency]
public IAuthorizer Authorizer { get; set; }
爲什麼這種依賴性不是我AuthorizationFilterAttr解決ibute &你會如何將授權者注入AuthorizationFilterAttribute?
感謝您的回覆。所以,對於IoC來說這是相當新穎的,我從鏈接中推斷出MVC正在實例化FilterAttribute,因此依賴注入永遠不會發生。這基本上是發生了什麼? – 2012-04-05 23:52:46
@TimBhd對。除非你明確地將它連接到你的容器,否則MVC不知道你正在嘗試使用Unity。另見這篇文章:http://stackoverflow.com/questions/1035611/mvc-unity-how-to-inject-dependencies-into-custom-filterattributes。如果你不想依賴Turbine,我認爲這是一個更直接的解決方案。 – 2012-04-06 00:26:04
@TimBhd另請參見Jimmy Bogard的文章:http://lostechies.com/jimmybogard/2010/05/03/dependency-injection-in-asp-net-mvc-filters/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%253A+ LosTechies +%2528LosTechies%2529。 – 2012-04-06 00:28:00