2017-03-24 1 views
0

Je crée mes propres fichiers de ressources via T4, car ils sont enregistrés dans la base de données.Initialisation de ressources personnalisées dans le projet MVC

Le résultat est par exemple:

namespace Resources 
{ 
    public class Backoffice { 

     internal static IResourceProvider resourceProvider = 
      new JsonResourceProvider(
       "Backoffice", 
       (int)System.Web.HttpContext.Current.Session["ApplicationId"]); 

     public static string AlgemeenActief 
     { 
      get { 
       var resource = 
        resourceProvider.GetResource(
         "AlgemeenActief", 
         CultureInfo.CurrentUICulture.Name); 

       if (string.IsNullOrEmpty(resource)) 
       { 
        switch ($"{CultureInfo.CurrentUICulture.Name}_{(int) System.Web.HttpContext.Current.Session["ApplicationId"]}") 
        { 
         default: 
         case "nl-NL_6": 
          return "Actief"; 
         case "en-GB_6": 
          return "Active"; 
        } 
       } 
       return resource; 
      } 
     } 
    } 
} 

Cela me permet d'utiliser mes ressources de la même manière que les ressources .NET standard (je peux maintenant taper Resources.Backoffice.AlgemeenActief, et j'ai IntelliSense me montrant les propriétés) .

Je reçois une erreur parce que la classe n'est pas initialisée cependant. Je ne sais pas comment ils sont initialisés dans .NET cependant. J'ai essayé de trouver des utilisations du constructeur dans une classe de ressources Microsoft:

internal Backoffice() { 
} 

Cela ne renvoie aucun résultat. Est-ce que quelqu'un sait comment les objets ressources sont initiés et comment je peux imiter cela?

Répondre

1

Dans ce cas, vous pouvez faire de votre classe statique:

public static class Backoffice 

et appeler le getter de la propriété comme ceci:

var resource = Backoffice.AlgemeenActief; 

Vous pouvez également laisser votre définition de classe telle qu'elle est et instancier un objet BackOffice comme ceci:

var backOffice = new BackOffice(); 

et appeler le getter comme la propriété suivante:

var resource = backOffice.AlgemeenActief; 
+0

@Kai Est-ce que cela répond à votre question? – swatsonpicken

+0

ça a marché, ouais, alors merci! Mais maintenant, je suis toujours intrigué de savoir comment Microsoft gère et pourquoi ils n'utilisent pas de classes statiques pour leurs fichiers de ressources: D – Kai