7

Gibt es irgendwo in ASP.NET MVC einen Verweis auf die ResourceProviderFactory, die instanziiert wird, um Property Injection durchzuführen, um eine benutzerdefinierte DB-Implementierung hinzuzufügen, von der die Ressourcen abgerufen werden?Benutzerdefinierte ResourceProviderFactory-Abhängigkeitsinjektion

Ich habe einen benutzerdefinierten Ressourcenanbieter geladen, aber ich wollte wissen, ob es eine Alternative zur Verwendung eines statischen DI-Containers gab, um die Abhängigkeit innerhalb des Providers zu injizieren.

Ähnlich wie Sie für die Rollen- und Mitgliedschaftsanbieter in MVC injizieren können.

Antwort

4

Der Trick besteht darin, eine Infrastruktur-Komponente Aufrufe in MVC DependencyResolver.Current zu implementieren, so dass Sie die echte ResourceProviderFactory mit Ihrem Lieblings-DI-Container registrieren können.

Hier ist eine solche Klasse, die den Trick tun:

public class MvcResourceProviderFactory : ResourceProviderFactory 
{ 
    public override IResourceProvider CreateGlobalResourceProvider(
     string classKey) 
    { 
     return GetFactory().CreateGlobalResourceProvider(classKey); 
    } 

    public override IResourceProvider CreateLocalResourceProvider(
     string virtualPath) 
    { 
     return GetFactory().CreateLocalResourceProvider(virtualPath); 
    } 

    private static ResourceProviderFactory GetFactory() 
    { 
     var resolver = DependencyResolver.Current; 

     var factory = resolver.GetService<ResourceProviderFactory>(); 

     if (factory != null) 
     { 
      return factory; 
     } 

     throw new InvalidOperationException(string.Format(
      "No {0} has been registered in the {1}.", 
      typeof(ResourceProviderFactory).FullName, 
      DependencyResolver.Current.GetType().FullName)); 
    } 
} 

Diese Klasse kann wie folgt konfiguriert werden:

<globalization 
    resourceProviderFactoryType="MyApp.MvcResourceProviderFactory, MyApp" 
    enableClientBasedCulture="true" uiCulture="auto" culture="auto" 
/> 
+1

Ich habe Ihnen die richtige Antwort auf diese, da sie die Frage beantwortet. Ich war mir dieser Methode bewusst, die das, was ich suchte, umzusetzen, aber ich war mehr daran interessiert, ob es eine alternative Methode zur Handhabung der Abhängigkeitsinjektion geben würde, anstatt das oben genannte zu verwenden. – Trotts

+0

Ich habe seit einiger Zeit damit zu kämpfen und den besten Ansatz, den ich gefunden habe, gut oder schlecht ... – retslig

Verwandte Themen