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

Initialising custom resources in MVC project

我正在通过 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,并且我有智能感知显示属性)。

我得到一个错误,因为 class 没有被初始化。但是,我不确定它们是如何在 .NET 中初始化的。我试图在微软资源 class:

中找到构造函数的用法
internal Backoffice() {
}

这 return 没有任何结果。有谁知道资源对象是如何启动的以及我如何模仿它?

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

public static class Backoffice

并像这样调用 属性 getter:

var resource = Backoffice.AlgemeenActief;

或者,保留您的 class 定义并像这样实例化一个 BackOffice 对象:

var backOffice = new BackOffice();

并像这样调用 属性 getter:

var resource = backOffice.AlgemeenActief;