2011-06-28 17 views
5

Tengo dos archivos .config, y necesito un System.Configuration.Configuration que es una fusión parcial entre ellos?Creando un System.Configuration.Configuration fusionando dos archivos de configuración?

Puedo leer los archivos como XML y crear la combinación deseada fácilmente, pero luego es una cadena o XDocument. Sin embargo, System.Configuration de .net parece estar estrictamente basado en archivos, por lo que tendría que escribirlo en un directorio temporal que me gustaría evitar.

¿Hay alguna manera de hacerlo?

ejemplo, config1.config:

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

y config2.config:

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

la configuración resultante debería entonces ser la unión de estos dos, de modo que tenga tanto el AppSetting y el punto final. Ahora, este ejemplo contiene WCF, pero estoy no buscando una solución específica WCF, ya que necesito absolutamente un objeto System.Configuration.Configuration.

config1 y config2 son solo ejemplos, la combinación real de ellos no es determinista, podría tener config1 y config4 o config 3 y config4 o config2 y config3.

+0

Hola Michael. Los archivos de configuración son disjuntos? ¿Puedes publicar un pequeño ejemplo de ambos y el resultado que esperas? Estaría encantado de ayudarte. – nick2083

+0

@nick agregó un ejemplo –

Respuesta

0

Si su objetivo es simplemente hacer sus archivos de configuración más modulares (y proteger potencialmente el acceso de archivos a secciones particulares), eche un vistazo a System.Configuration.SectionInformation.ConfigSource.

+0

configSource solo acepta una sola anulación lamentablemente. En este caso, no servirá de nada ya que las combinaciones de configuración reales no son deterministas. aclarará la pregunta. –

+0

Gotcha. En ese caso, no puedo pensar en otra forma de hacer esto que no sea jugar con XmlDocument y escribir un archivo temporal para cargar, como mencionaste. Sin embargo, viendo esto por curiosidad; nunca sabes. – drharris