2017-03-24 26 views
0

我通過T4創建自己的資源文件,因爲它們保存在數據庫中。在MVC項目中初始化自定義資源

其結果是,例如:

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; 
      } 
     } 
    } 
} 

這讓我用我的資源,在相同的方式爲標準的.NET資源(我現在可以輸入Resources.Backoffice.AlgemeenActief,我有智能感知顯示我的屬性) 。

我得到一個錯誤,因爲這個類沒有被初始化。我不知道他們如何在.NET中初始化。我試圖在Microsoft資源類中找到構造函數的用法:

internal Backoffice() { 
} 

這不會返回任何結果。有誰知道資源對象是如何啓動的,以及我如何模仿它?

回答

1

在這種情況下,你可以讓你的類的靜態:

public static class Backoffice 

,並調用屬性getter這樣的:

var resource = Backoffice.AlgemeenActief; 

或者,離開你的類定義,因爲它是和實例化的BackOffice對象像這樣:

var backOffice = new BackOffice(); 

並且調用屬性getter像這樣:

var resource = backOffice.AlgemeenActief; 
+0

@凱這個回答你的問題? – swatsonpicken

+0

它得到了它的工作,是的,所以謝謝!但是現在我仍然很想知道微軟如何處理它以及爲什麼他們不使用靜態類來處理它們的資源文件:D – Kai