2010-05-21 13 views
7

Actualmente estoy evaluando mis opciones para una reescritura de los proyectos en los que estoy trabajando y estoy un poco molesto por la naturaleza de tipo cuerda de nuestros archivos app.config.App.Config o XAML

me gustaría pasar a un enfoque más estructurado, así que tengo dos opciones:

  • SectionHandlers Uso personalizados en el app.config
  • chatarra app.config y el uso de XAML en su lugar.

Me gustaría obtener sus opiniones e historias de terror sobre esto, ¿cuáles son los pros y los contras de usar XAML para esto?

Cheers, Florian

+0

+1 Para la interesante idea de usar Xaml para config. – AnthonyWJones

+0

Acabo de notar que Jebrains Resharper 2016.1 usa xaml para almacenar la configuración de la solución en el archivo * .DotSettings.User. Grandes mentes... –

Respuesta

3

Si estamos hablando de los archivos de configuración que yo usaría el app.config? ¿Por qué? Para eso está destinado. Si estamos hablando de recursos (imágenes, mensajes) los pondría en un directorio de recursos XAML.

Hay una guía disponible en la web sobre dónde poner qué, pero aún estaba en borrador la última vez que lo revisé y no menciona app.config afaik.

Pero hacer lo que funciona mejor para usted :)

1

En términos de esfuerzo de desarrollo es de 6 de la mitad de una docena de los otros.

Si usa Xaml, tendrá que crear un conjunto de instancias de clases de las cuales Xaml creará.

Si usa Custom SectionHandlers, necesitará crear instancias de clases a las que representarán estas secciones. También necesita crear los manejadores de sección también.

1 - 0 a Xaml.

En el caso de Xaml, tendrá que proporcionar su propia infraestructura para cargar el xaml al inicio y acceder a la configuración en toda su aplicación.

Por otro lado, usando Section Handlers, el .NET ConfigurationManager existente proporciona la infraestructura para acceder a estos.

1 todo

+4

Cuando venga el siguiente tipo y lea tu código, entenderá lo que estás haciendo con los manejadores de sección personalizados. Él obtendrá un momento WTF con el XAML. 2-1 config. –

1

Si está trabajando con .NET 4, ¿por qué no combinar sus dos opciones y poner XAML dentro App.config?

sección de configuración
using System.Configuration; 
using System.Xaml; 
using System.Xml; 

public class XamlConfigurationSection : IConfigurationSectionHandler 
{ 
    public object Create(object parent, object configContext, XmlNode section) 
    { 
     return XamlServices.Parse(section.OuterXml); 
    } 
} 

Esta costumbre permite incluir cualquier objeto descrito como XAML en App.config:

<configSections> 
    <section name="SomeType" type="XamlConfigurationSection, …" /> 
</configSections> 

<SomeType xmlns="clr-namespace:SomeNamespace;assembly=…" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    … 
</SomeType> 

siempre y cuando tenga un tipo:

namespace SomeNamespace 
{ 
    public class SomeType 
    { 
     public SomeType() { … } // XAML requires a parameterless constructor 
     … 
    } 
} 

y finalmente recuperar una instancia de este tipo de App.config con:

var objectOfSomeType = ConfigurationManager.GetSection("SomeType") as SomeType;