2

エントリをapp.config含むファイルがあります。ArrayOfString各エントリには、セミコロンで区切られた文字列が含まれています。可能であれば、ラムダを使用して、List<>入力基準に基づいて値を解析できるようにしたいと考えています。しかし、その基準に基づいて最初に見つかったエントリが必要です。または、ファイルを使用するより良い方法はありapp.configますか?

例えば ​​..

[source],[filetype]を含む最初のエントリを見つけて、ファイルパスを返したい場合。

app.config記入例です。

SOURCE;FLAC;112;2;\\sourcepath\music\

DEST;FLAC;112;2;\\destpath\music\
4

1 に答える 1

1

文字列分割操作の正しいインデックスに値を入れることに頼るのではなく、独自のConfigurationSection定義を作成する必要があります。

MSDN のHow ToMSDN ConfigurationProperty の例を参照してください。

開始するためのコードを次に示します。

class CustomConfig : ConfigurationSection
{
    private readonly CustomElementCollection entries =
        new CustomElementCollection();

    [ConfigurationProperty("customEntries", IsDefaultCollection = true)]
    [ConfigurationCollection(typeof(CustomElementCollection), AddItemName = "add")]
    public CustomElementCollection CustomEntries { get { return entries; } }
}

class CustomElementCollection : ConfigurationElementCollection
{
    public CustomElement this[int index]
    {
        get { return (CustomElement) BaseGet(index); }
        set
        {
            if (BaseGet(index) != null)
            {
                BaseRemoveAt(index);
            }
            BaseAdd(index, value);
        }
    }

    protected override ConfigurationElement CreateNewElement()
    {
        return new CustomElement();
    }

    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((CustomElement)element).Name;
    }
}

class CustomElement : ConfigurationElement
{
    [ConfigurationProperty("name", IsRequired = true)]
    public string Name
    {
        get { return this["name"] as string; }
        set { this["name"] = value; }
    }

    [ConfigurationProperty("direction", IsRequired = true)]
    public string Direction
    {
        get { return this["direction"] as string; }
        set { this["direction"] = value; }
    }

    [ConfigurationProperty("filePath", IsRequired = true)]
    public string FilePath
    {
        get { return this["filePath"] as string; }
        set { this["filePath"] = value; }
    }
}

カスタム構成をSelect指定したら、 custom で指定された任意のプロパティを使用してラムダを使用できますConfigurationElement

于 2012-05-21T20:27:59.003 に答える