0

我目前有以下代码

public IList<string> CensoredWords { get; private set; }

public Censor()
{
    this.CensoredWords = new List<string>
    {
        "word1",
        "word2",
        "word4"
    };
}

我的 web.config 文件包含以下内容

<add key="keywords" value="word1,word2,word3" />

显然不是很好,特别是如果您想添加新单词等,所以我对此进行了一些修改

public Censor()
{
    this.CensoredWords = new List<string> { System.Web.Configuration.WebConfigurationManager.AppSettings["keywords"] };
}

我也试过

public Censor()
{
    string[] keywords = System.Web.Configuration.WebConfigurationManager.AppSettings["keywords"].Split(new char[] { ',' });
    foreach(string keyword in keywords)
    {
        this.CensoredWords.add(keyword);
    }
}

但由于某种原因似乎没有任何工作,谁能告诉我为什么

4

3 回答 3

1

实际上,看着它,您有以下内容:

public IList<string> CensoredWords { get; private set; }

尝试将其设置为非私有。

顺便说一句,这段代码有效:

string keywords = "Value1,Value2,Value3";
List<string> censoredWords = keywords.Split(',').ToList();
于 2013-11-06T13:02:27.527 回答
0

由于您正在从 web.config 文件中读取密钥(因此假设您不想从应用程序本身编辑被审查的词),因此您不需要该set属性。

您可以读取静态对象中的值,以便在任何地方都可以使用它们,而无需每次都重新解析列表:

private static readonly List<string> _censoredWords  = System.Configuration.ConfigurationManager.AppSettings["keywords"].Split(',').ToList();
public static IList<string> CensoredWords
{
    get
    {
         return _keywords;
    }
}
于 2013-11-06T13:17:43.280 回答
0

这应该解决:

this.CensoredWords = new List<string>(System.Web.Configuration.WebConfigurationManager.AppSettings["keywords"].Split(','));
于 2013-11-06T14:26:17.533 回答