Ich bin ziemlich neu in Unity & IoC im Allgemeinen & wie üblich, habe ich mich schnell in eine Sackgasse bekam ...Dependency Injection in einen AuthorizationFilterAttribute
Ich habe ein Autorisierungs-Filter Attribut für das ASP.NET Web erstellt API Beta. Ich muss jetzt meinen Authorizer in das Attribut injizieren, aber da dies ein Attribut ist, kann ich das public TestAuthAttribute(IAuthorizer Authorizer)
in meinem Konstruktor nicht einfach tun.
Also entschied ich mich dann, eine öffentliche Eigenschaft zu erstellen, die mit dem [Dependency] -Attribut für die Property-Injektion dekoriert wurde, aber es wird nicht aufgelöst. Hier
ist der Code:
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
}
Wenn die Steuerung mit dem dekoriert [TestAuth] das Attribut ausgelöst wird, aber die Authorizer nicht gelöst, es ist null)
I gesetzt haben folgende Code in meinem Controller & Authorizer nicht gelöst bekommen ...
[Dependency]
public IAuthorizer Authorizer { get; set; }
Warum ist diese Abhängigkeit in meinem AuthorizationFilterAttr nicht behoben ibute & Wie würden Sie den Authorizer in AuthorizationFilterAttribute injizieren?
Danke für die Antwort. Da ich also ziemlich neu für IoC bin, schließe ich aus dem Link, dass MVC das FilterAttribute instantiiert und daher die Abhängigkeitsinjektion niemals stattfindet. Ist das im Grunde was passiert? –
@TimBhd Richtig. Sofern Sie es nicht explizit an Ihren Container anschließen, weiß MVC nicht, dass Sie versuchen, Unity zu verwenden. Siehe auch diesen Beitrag: http://stackoverflow.com/questions/1035611/mv-unity-how-to-inject-dependencies-into-custom-filterattributes. Ich denke, das ist eine direktere Lösung, wenn Sie nicht von Turbine abhängig sein wollen. –
@TimBhd Siehe auch Jimmy Bogards Beitrag: http://losetechies.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. –