在 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;
我正在通过 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;