2011-06-28 3 views
5

私は2つの.configファイルを持っており、それらの間の部分的なマージであるSystem.Configuration.Configurationが必要ですか?2つの設定ファイルをマージしてSystem.Configuration.Configurationを作成しますか?

ファイルをXMLとして読み込み、簡単に目的のマージを作成できますが、それは文字列またはXDocumentです。しかし、.netのSystem.Configurationは厳密にファイルベースであると思われますので、避けたい一時ディレクトリに書き込む必要があります。

これを行う方法はありますか?

例、config1.config

<configuration> 
    <appSettings> 
     <add key="CacheTime" value="300" /> 
    </appSettings> 
    <system.serviceModel> 
     <behaviors> 
      <endpointBehaviors> 
      <behavior name="MyBehavior"> 
       <!-- snipped --> 
      </behavior> 
      </endpointBehaviors> 
     </behaviors> 
    </system.serviceModel> 
</configuration> 

config2.config

<configuration> 
    <system.serviceModel> 
    <client> 
      <endpoint name="MyEndpoint" address="net.tcp://...." 
      behaviorConfiguration="MyBehavior" binding="netTcpBinding" 
      contract="IMyContract"> 
      </endpoint> 
    </client> 
    </system.serviceModel> 
</configuration> 

私はのAppSettingとエンドポイントの両方を持っているように、結果の構成は、その後、これらの2の労働組合でなければなりません。今、この例にはWCFが含まれていますが、私はではなく、System.Configuration.Configurationオブジェクトが絶対必要なので、ではWCF固有のソリューションを探していません。

config1とconfig2は単なる例であり、実際の組み合わせは不確定であり、config1とconfig4、config 3とconfig4、config2とconfig3があります。

+0

こんにちは。設定ファイルは分離していますか?あなたは両方の小さな例を投稿できますか?結果は期待していますか?私はあなたを助けてうれしいです。 – nick2083

+0

@nickは例を追加しました –

答えて

0

コンフィギュレーションファイルをモジュール化し、特定のセクションへのファイルアクセスを潜在的に保護することを目標とする場合は、System.Configuration.SectionInformation.ConfigSourceをご覧ください。

+0

configSourceは悲しいことにひとつのオーバーライドしか受け付けません。この場合、実際のコンフィギュレーションの組み合わせが非決定的であるため、何の効果もありません。質問を明確にします。 –

+0

Gotcha。その場合、XmlDocumentを使いこなすことと、ロードする一時ファイルを書くこと以外の方法はないと思います。しかしこれを好奇心で見る。あなたは、決して知らない。 – drharris

関連する問題