首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >方法参数智能化

方法参数智能化
EN

Stack Overflow用户
提问于 2020-11-19 14:55:36
回答 1查看 42关注 0票数 0

我有一个字符串列表,这些字符串是方法的有效输入。字符串列表相当长,可能会存储在数据库中(但不是100%必需的-可以存储在资源文件中)。我希望在理想的情况下,验证传递给方法的字符串是否有效,有点像枚举。我不想创建枚举,因为输入列表将通过调用另一个系统来生成。我希望能够通过更新数据库或资源文件来自动生成输入。

代码语言:javascript
运行
复制
// Magic String
public void Test()
{
    var result =  DoSomething("myFieldName");
}

// would like myFieldName to be some sort of intellesence
public void Test()
{
    var result =  DoSomething(myFieldName);
}


public string DoSomething(string input)
{
    return $"Hello {input}";
}

我希望避免传递魔法字符串,因为可能会有100+值,而开发人员将无法记住所有可能的输入。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-19 16:16:21

一种方法是创建一个类,该类具有从数据源(可以是app.config、数据库或其他数据存储)返回值的静态只读属性。

在本例中,我使用了以下app.config:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="SomePropertyName" value="Some Property Value" />
    <add key="MyFieldName" value="Another value" />
  </appSettings>
</configuration>

接下来,我们可以创建一个类,该类具有表示配置中的键的属性,该属性值将从配置文件中提取。下面的示例类有一个私有方法,它将从配置中返回值(但用从数据库中查找值的方法替换该方法将非常容易):

代码语言:javascript
运行
复制
public static class ConfigKeys
{
    // Get-only properties that the developer can access
    public static string MyFieldName => GetString("MyFieldName");
    public static string AnotherFieldName => GetString("SomePropertyName");

    // Returns the actual string from the data source (app.config, database, etc)
    private static string GetString(string propertyName)
    {
        return ConfigurationManager.AppSettings.Get(propertyName);
    }
}

然后从开发人员的角度来看,他们所要做的就是:

代码语言:javascript
运行
复制
public static void Main()
{
    DoSomething(ConfigKeys.MyFieldName);

    // rest of code omitted
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64906750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档