【发布时间】:2012-09-21 11:10:00
【问题描述】:
我有一些我想在应用程序级别拥有的常量,例如存储过程名称、用户消息等。我改变这些资源的可能性很小。
请告诉我在我们的应用程序中保持常量的良好做法。
资源字典是否优于 .cs 文件。
问候 AA
【问题讨论】:
标签: c# resources constants embedded-resource
我有一些我想在应用程序级别拥有的常量,例如存储过程名称、用户消息等。我改变这些资源的可能性很小。
请告诉我在我们的应用程序中保持常量的良好做法。
资源字典是否优于 .cs 文件。
问候 AA
【问题讨论】:
标签: c# resources constants embedded-resource
对于初学者来说,你在考虑这些东西时走在了正确的轨道上。魔术字符串和其他魔术值不好的原因有很多。
以下是我们使用的一些准则:
根据需要,每个程序集通常有三个文件: 首先,一个常量文件。这通常和 Constants.cs 一样简单。将您的常量(以及非编译时常量且永不更改的只读静态变量)放入此文件中。您还可以包含可配置但必须具有默认值的内容。
internal class Constants
{
public const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Error;
public static readonly string APP_NAME = Configuration.ApplicationName ?? "Test Application";
}
其次,读取配置值并将它们作为静态值返回的文件。这通常是 Configuration.cs,负责返回所有配置值。这使您不必重新编译以更改连接字符串、处理设置或其他内容。实际值位于 .ini 文件、web.config 或 app.config、数据库表或源代码之外的其他位置等位置。如果在下面的示例中,您可以在整个代码中使用 ConfigurationManager.AppSettings["ApplicationName"],但是如果您想更改该 appsetting 的键怎么办?你必须找到一个重命名它的所有引用。只需多花 30 秒的时间来做这样的事情,以及所有 Configuration.ApplicationName。
internal class Configuration
{
public static string ApplicationName
{
get
{
return ConfigurationManager.AppSettings["ApplicationName"];
}
}
}
最后,一个或多个资源文件。这是我们放置图标、图像、不寻常字体、本地化(或只是可更改)字符串以供显示等内容的地方......
没有具体的正确方法来做这些事情,但我认为以上内容将为您提供一个起点。
【讨论】: