0

我有 ac# webapi 应用程序,它到处都有魔术字符串和数字。我被要求通过一个字符串清单或一个将这些字符串保存在一个地方并引用它们的包来改变这一点。我不想使用枚举。我不知道什么是字符串清单或捆绑包。

有人可以通过一个例子给我一个关于如何做到这一点的想法。基本上,我需要避免在整个应用程序中进行硬编码,并为这些字符串使用外部配置,这样每当这些字符串值发生变化时,我们就不必编译和部署 .NET 应用程序。

想法是在某种包或字符串清单中显示所有预期的响应并引用它,而不是到处都有幻数和字符串。

我需要删除魔术案例编号和 FreeText,而是在一个地方配置这些值并引用它们,而无需再次部署应用程序。

switch (ReasonCode) 
{ 
    case 0: 
        FreeText = "Passed. Please proceed"; 
        break;
    case 1: 
        FreeText = "Fail"; 
        break;
}
4

1 回答 1

0

Enum当它们是整数时,是存储幻数常量的首选方式。

对于字符串常量,简单的方法是使用一个或多个公开代码的静态类:

public static class ApiCodes
{
  public int RootUserCode { get; } = 42;
  public string DeleteActionCode { get; } = "REM";
  // ..
}

一个神奇的代码值更改可以在一个地方完成,并且代码非常可读:

public void DoAction(string actionCode)
{
  if (actionCode == ApiCodes.DeleteActionCode)
  {
    ..
  }
}

编辑:

在根级别使用单例和静态类,您还可以具有层次结构:

public static class ApiCodes
{
    public static ActionCodes ActionCodes { get; } = ActionCodes.Instance;
}

public class ActionCodes
{
    public static ActionCodes Instance { get; } = new ActionCodes();

    // Singleton: private constructor
    private ActionCodes()
    {
    }

    public string Add { get; } = "ADD";
    public string Delete { get; } = "REM";
}

并像这样使用它:

public void DoAction(string actionCode)
{
  if (actionCode == ApiCodes.ActionCodes.Delete)
  {
    ..
  }
}
于 2020-02-05T16:20:47.327 回答