0

単純なものが欠けているだけだといいのですが。exe.configファイルのセクションに対して読み取り/書き込みを行う必要があります。私は私のコードにこれを持っています:

var appConfiguration = ConfigurationManager.OpenExeConfiguration("Mytest.Console.exe");
var fileEnvironment = appConfiguration.GetSection("fileEnvironment");

これは私のapp.configです:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="fileEnvironment" type="System.Configuration.DictionarySectionHandler"/>
    </configSections>

    <fileEnvironment>
        <add key="TestEntry1" value="A nice value"/>
        <add key="TestEntry2" value="Another value"/>
    </fileEnvironment>
</configuration>

appConfiguration変数は{System.Configuration.Configuration}として返され、「HasFile」プロパティがtrueに設定されます。

変数をキャストしないと、「fileEnvironment」はとして返されSystem.Configuration.DefaultSectionます。メソッドに追加するIDictionary<string, string>と、GetSectionfileEnvironmentはnullになります。

何か案は?

4

2 に答える 2

0

私は辞書の問題を調査し続け、このスタックオーバーフローのQ&Aを思いつきました!辞書の代わりにコレクションを生成しますが、解決策を示します。みなさん、ありがとうございました。

于 2012-01-21T20:54:16.243 に答える
0

この古い記事によると、セクションがを使用して実装されるとDictionarySectionHandler、ではなくConfigurationManager.GetSection()非ジェネリックを返します。それがあなたのキャストが失敗した理由です。IDictionaryIDictionary<T,V>

現代では、実際にはを返すように見えますがHashTable

于 2014-10-18T04:49:07.917 に答える