在MVC项目中初始化自定义资源

时间:2017-03-24 10:45:48

标签: c# asp.net-mvc resx

我正在通过T4创建自己的资源文件,因为它们保存在数据库中。

结果是例如:

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,并且我有intellisense向我显示属性)。

我收到错误,因为该类未初始化。我不知道它们是如何在.NET中初始化的。我试图在microsoft资源类中找到构造函数的用法:

internal Backoffice() {
}

这不会返回任何结果。有谁知道如何启动资源对象以及我如何模仿它?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使您的类静态:

public static class Backoffice

并像这样调用属性getter:

var resource = Backoffice.AlgemeenActief;

或者,保持您的类定义不变,并实例化一个BackOffice对象:

var backOffice = new BackOffice();

并像这样调用属性getter:

var resource = backOffice.AlgemeenActief;