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

时间:2015-07-17 22:01:58

标签: c# wpf

我正在研究WPF Prism应用程序,并且有两种情况,最好是拥有可在整个系统中访问的字符串。

第一个是我的观点的名称。设置视图时使用视图的名称,以及导航到视图。我想避免视图名称中的拼写错误。这些名称在未来也有可能发生变化,依靠内存来查找该视图使用位置的每个实例并不是一个好主意。第二种情况是基于声明的身份验证意义上的不同声明的名称。

我是否应该将这些作为常量创建,尽管字符串可能会发生变化?或许只读它们会更受欢迎?感谢您的投入!

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

我肯定会在通用程序集中使用存储类。这样的事情:

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";
}

Microsoft使用类似的approach
这只留下一个两难:const vs readonly。我推荐在你的情况下使用readonly,因为你说有可能改变。仅当数据实际上是常量时才应使用Const,因为常量未被引用,而是复制到每个引用程序集。例如。如果在程序集A中定义常量并在程序集B中使用它们,那么如果在A中更改它们,则必须重新编译B,否则B将保留这些常量的旧版本。

答案 2 :(得分:1)

常见的程序集存储类可能很简单,可以满足您的需求,但您可能需要考虑使用.resx文件。它本质上是一个XML格式文件,您可以在其中对字符串进行硬编码,然后可以在代码中引用。 MSDN Documentation

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

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

  •   
  • 资源文件为您提供了存储字符串,文件和脚本的中心位置,并以强类型方式引用它们(因此,如果您不正确地引用它们,编译将会中断)。

  •   
  • 资源文件可以编译成附属程序集,从而可以轻松更改生产应用程序中的资源,而无需重新编译整个内容。

  •   

What are the benefits of resource resx files?

您可以从resx中读取:

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

答案 3 :(得分:-1)

我对给出的答案感到困惑。所有UI字符串应始终位于字符串表中。这就是它的用途。它的无障碍系统。另外,你可以本地化。