使用资源而无需浏览资源计划器?

时间:2018-02-12 10:47:31

标签: c# embedded-resource

过去我以resources.User为例使用了资源。虽然几周之后(可能是两者之间的更新?)我注意到即使这没有创建编译错误,但当我输入resources.时我不再有自动完成。

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

我开始怀疑:在没有资源管理器的情况下使用这种方法是否可行?或者现在可以采用这种方法了吗?

1 个答案:

答案 0 :(得分:0)

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

E.g。如果将资源User重命名为UserLabelresources.User将导致编译错误。但是ResourcesDB2.ResourceManager.GetString("User")只会在运行时失败。

因此最好使用直接引用,即没有ResourceManager的方法。

关于IntelliSense的问题:您似乎无法使用生成的静态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;
    // ...
}