资源字典对.cs文件

时间:2012-09-21 11:10:01

标签: c# resources constants embedded-resource

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

请告诉我在我们的申请中保留常数的良好做法。

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

此致 AA

1 个答案:

答案 0 :(得分:3)

对于初学者来说,你正在考虑这些东西。由于很多原因,魔法弦和其他魔法值都很糟糕。

以下是我们使用的一些指南:

  1. 只允许常量为REAL-WORLD的常量。如果您需要使用“我的bonnie谎言超过{0}”作为格式字符串,那么您可以使用RESOURCE。
  2. 可能会发生变化的事情,不仅仅是常数。你可以选择这些东西。
  3. 如果它不是您逻辑的一部分,则不会包含在源代码中。它位于以下其中一个外部位置,并在源代码中引用,因此您无需重新编译即可进行更改。
  4. 根据需要,我们通常每个程序集有三个文件: 首先,一个常量文件。这通常和Constants.cs一样简单。在此文件中放置常量(AND readonly静态不是编译时常量且永不更改)。您还可以包含可配置但必须具有默认值的内容。

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

    最后,一个或多个资源文件。这是我们放置图标,图像,不寻常字体,本地化(或只是可变)字符串等用于显示目的的地方......

    没有特定的正确方法可以做这些事情,但我认为上面的内容会给你一个开始的地方。