我正在使用C#构建一个ASP.NET MVC 4网站。我正在使用资源文件(.resx
)本地化所有的静态字符串。我使用Visual Studio界面创建和填充资源文件。在我的index.cshtml
视图中,我尝试使用资源文件中的一个字符串,如下所示:
@using Namespace.To.RESX.File
...
<h1>@EN_US.GLOBAL_NAME</h1>
<h2>“@EN_US.GLOBAL_SLOGAN”</h2>
...
我可以编译该应用程序,但在加载页面时出现运行时错误,显示:
Compiler Error Message: CS0122: 'Namespace.To.RESX.File.EN_US' is inaccessible due to its protection level
在resx设计器文件中查看,我可以看到该类及其所有成员都标记为internal
。我完全了解C#访问控制修饰符的作用、工作原理等内容,但我不明白为什么Visual Studio会像这样限制对资源成员的访问。
为什么Visual Studio会这样做?是否有(简单)方法可以更改这些访问控制修饰符,或者是我完全误解了资源文件的意义?