2011-06-28 16 views
5

Mam dwa pliki .config i potrzebuję System.Configuration.Configuration, który jest częściowym scaleniem między nimi?Tworzenie konfiguracji System.Configuration.Configuration przez połączenie dwóch plików konfiguracyjnych?

Mogę odczytać pliki w formacie XML i łatwo utworzyć żądane scalenie, ale jest to ciąg znaków lub dokument XDocument. Jednak System.Configuration .net wydaje się być ściśle oparty na plikach, więc musiałbym zapisać go w katalogu tymczasowym, którego chciałbym uniknąć.

Czy jest jakiś sposób na zrobienie tego?

przykład, config1.config:

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

i config2.config:

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

Otrzymany konfiguracja powinna być następnie związek z tych dwóch, tak, że mają zarówno AppSetting i końcowego. Teraz ten przykład zawiera WCF, ale jestem nie szukając rozwiązania konkretnego WCF, ponieważ absolutnie potrzebuję obiektu System.Configuration.Configuration.

config1 i config2 to tylko przykłady - rzeczywista ich kombinacja jest niedeterministyczna, mogę mieć config1 i config4 lub config 3 i config4 lub config2 i config3.

+0

Witaj Michael. Pliki konfiguracyjne są rozłączne? Czy możesz podać mały przykład obu, i wynik, którego oczekujesz? Chętnie ci pomogę. – nick2083

+0

@nick dodano przykład –

Odpowiedz

0

Jeśli Twoim celem jest po prostu uczynienie plików konfiguracyjnych bardziej modułami (i potencjalnie chronić dostęp do plików do poszczególnych sekcji), spójrz na System.Configuration.SectionInformation.ConfigSource.

+0

configSource akceptuje tylko jedno przesłonięcie ze smutkiem. W tym przypadku nie przyniesie to żadnego pożytku, ponieważ rzeczywiste kombinacje konfiguracji są niedeterministyczne. wyjaśni pytanie. –

+0

Gotcha. W tym przypadku nie mogę wymyślić żadnego innego sposobu na zrobienie tego poza manipulowaniem przy XmlDocument i napisaniem tymczasowego pliku do załadowania, o czym wspomniałeś. Patrząc na to z ciekawości; nigdy nie wiesz. – drharris

Powiązane problemy