使用资源而不遍历资源意味着?



过去,我以resources.User为例使用资源。虽然几周了(也许中间有更新?我注意到即使这不会产生编译错误,当我键入resources.时,我不再获得自动完成。

因此,我现在使用:ResourcesDB2.ResourceManager.GetString("User")为例来介绍资源管理器。

不过,我开始怀疑:在没有资源管理器的情况下使用该方法是否建议,或者现在是要走的路?

重命名键时,通过将资源的键作为字符串传递来引用资源可能会中断。

例如,如果将资源User重命名为UserLabelresources.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;
// ...
}

最新更新