【问题标题】:Resource Dictionary Vs .cs file资源字典与 .cs 文件
【发布时间】:2012-09-21 11:10:00
【问题描述】:

我有一些我想在应用程序级别拥有的常量,例如存储过程名称、用户消息等。我改变这些资源的可能性很小。

请告诉我在我们的应用程序中保持常量的良好做法。

资源字典是否优于 .cs 文件。

问候 AA

【问题讨论】:

    标签: c# resources constants embedded-resource


    【解决方案1】:

    对于初学者来说,你在考虑这些东西时走在了正确的轨道上。魔术字符串和其他魔术值不好的原因有很多。

    以下是我们使用的一些准则:

    1. 常量只允许用于 REAL-WORLD 常量。如果您需要使用“My bonnie lie over the {0}”作为格式字符串,请使用 RESOURCE。
    2. 可能会改变的东西,永远,不是常数。您有几种选择。
    3. 如果它不是您的逻辑的一部分,它就不会出现在源代码中。它位于以下外部位置之一并在源代码中被引用,因此您无需重新编译即可进行更改。

    根据需要,每个程序集通常有三个文件: 首先,一个常量文件。这通常和 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"];
            }
        }
    }
    

    最后,一个或多个资源文件。这是我们放置图标、图像、不寻常字体、本地化(或只是可更改)字符串以供显示等内容的地方......

    没有具体的正确方法来做这些事情,但我认为以上内容将为您提供一个起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2023-03-25
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多