如何处理可在应用程序范围内访问的字符串

本文关键字:范围内 应用程序 访问 字符串 何处理 处理 | 更新日期: 2023-09-27 18:03:13

我正在开发一个WPF Prism应用程序,在两种情况下,最好拥有可在整个系统中访问的字符串。

第一个是视图的名称。视图的名称在设置视图以及导航到视图时使用。我想避免视图名中的错别字。这些名称在将来也有可能改变,并且依靠内存来查找使用该视图的每个实例并不是一个好主意。第二种情况是针对不同权利要求的名称,即基于权利要求的身份验证。

我应该创建这些常量,尽管字符串的变化的可能性?也许将它们设置为只读会更好?谢谢你的建议!

如何处理可在应用程序范围内访问的字符串

我肯定会在公共程序集中使用存储类。像这样:

public static class Claims
{
  public static readonly String View = "http://schemas.mycompany.com/claims/view";
  public static readonly String Edit = "http://schemas.mycompany.com/claims/edit";
  public static readonly String Upvote = "http://schemas.mycompany.com/claims/upvote";
}

微软使用类似的方法
这只剩下一个难题:const还是只读。我建议在您的情况下使用readonly,因为您说有可能更改。只有当数据实际上是常量时才应该使用Const,因为常量不会被引用,而是被复制到每个引用程序集。例如,如果您在汇编A中定义了常量并在汇编B中使用它们,那么如果您在汇编A中更改了它们,则必须重新编译B,否则B将保留这些常量的旧版本。

我会创建一个包含所有常量的类,并将所有常量值保存在那里。您可以创建一个在所有其他项目之间共享的项目。

一个通用的程序集存储类可能足够简单,可以满足您的需要,但是您可能需要考虑使用.resx文件。它本质上是一个XML格式文件,你可以硬编码你的字符串,然后你可以在你的代码中引用。MSDN文档

以下是使用它们的一些令人信服的理由:

  • 资源文件通过根据用户的语言环境自动决定使用哪种语言resx文件,为您提供了一种简单的方法来本地化/国际化您的。net应用程序。要添加更多语言,只需添加另一个已翻译的资源文件。

  • 资源文件给你一个中央位置来存储你的字符串、文件和脚本,并以强类型的方式引用它们(所以如果你不正确地引用它们,编译将会中断)。

  • 资源文件可以编译成附属程序集,这使得在生产应用程序中更改资源变得很容易,而不必重新编译整个程序。

资源文件的好处是什么?

你可以这样从resx中读取:

var <Variable Name> = Namespace.Properties.Resources.<Resource Name>

我对所给的答案感到困惑。所有UI字符串都应该在字符串表中。这就是它存在的意义。它可在系统范围内访问。另外你可以本地化