从长字符串</string>填充IList <string>

时间:2013-11-06 12:56:45

标签: c# asp.net

我目前有以下代码

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" />

显然不是很好,特别是如果你想添加新单词ect所以我已经修改了一下这个

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);
    }
}

但由于某些原因,似乎没有任何工作,任何人都可以告诉我为什么

3 个答案:

答案 0 :(得分:1)

实际上,看着它你有以下几点:

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

尝试将其设置为非私密。

除此之外,这段代码有效:

string keywords = "Value1,Value2,Value3";
List<string> censoredWords = keywords.Split(',').ToList();

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

这应该解决:

this.CensoredWords = new List<string>(System.Web.Configuration.WebConfigurationManager.AppSettings["keywords"].Split(','));