过去,我以resources.User
为例使用资源。虽然几周了(也许中间有更新?我注意到即使这不会产生编译错误,当我键入resources.
时,我不再获得自动完成。
因此,我现在使用:ResourcesDB2.ResourceManager.GetString("User")
为例来介绍资源管理器。
不过,我开始怀疑:在没有资源管理器的情况下使用该方法是否建议,或者现在是要走的路?
重命名键时,通过将资源的键作为字符串传递来引用资源可能会中断。
例如,如果将资源User
重命名为UserLabel
,resources.User
将导致编译错误。但ResourcesDB2.ResourceManager.GetString("User")
只会在运行时失败。
因此,最好使用直接引用,即没有ResourceManager
的方法。
关于智能感知的问题:您似乎没有使用生成的静态ResourcesDB2.Designer.cs
类访问资源。 尝试ResourcesDB2.User
而不是通过resources
变量。
如果您要查找的键是动态的,则ResourceManager
是有用的,例如
int weekDayNumber = 3; // 0 to 6
string weekDayName = ResourcesDB2.ResourceManager.GetString("WeekDay_" + weekDayNumber); // "Tuesday"
"WeekDay_0"
要在资源文件中"WeekDay_6"
的键。同样,如果有人重命名这些键,这将很容易中断。此外,如果有人试图通过执行字符串搜索(例如搜索"WeekDay_0")来查找要重命名的键的用法,则找不到此用法。
因此,这样做会更健壮:
switch (weekDayNumber) {
case 0: weekDayName = ResourcesDB2.WeekDay_0; break;
case 1: weekDayName = ResourcesDB2.WeekDay_1; break;
// ...
}