2009-03-02 18 views
9

Estoy usando la clase de configuración en mi proyecto .NET. Noté en el editor que solo ciertos tipos están disponibles para usarse como tipos para las propiedades individuales en la clase de Configuraciones. ¿Qué sucede si quiero tener una propiedad que sea una enumeración de mi código o una colección genérica, por ejemplo? ¿Cómo implementaría eso?Usar la configuración con tipos complejos

Supongo que puedo hacerlo en un archivo separado usando el mecanismo de clase parcial (ya que la Configuración ya está definida como una clase parcial) pero quiero ver si alguien está de acuerdo con eso y si puede haber una manera para hacerlo dentro del editor.

+0

No estoy seguro de entender su pregunta correctamente, sobre todo la parte sobre el editor y los "ciertos tipos están disponibles para ser utilizados como tipos", ¿puede aclararlo o reformularlo? – mbillard

+0

Bueno, si crea un archivo Settings.settings en su proyecto, hay un editor que puede usar para establecer el tipo de datos, nombre, etc. de una configuración. Usted elige el tipo de datos para una configuración desde un cuadro TreeList. Esa caja TreeList solo hace referencia a ciertos tipos. Los tipos en mi ensamblaje no son referencias. –

+0

referenciado * no referencias ... :) –

Respuesta

10

Cree un nuevo archivo de "Configuraciones" para agregar un tipo de elección compleja/definida por el usuario. Aquí hay un instructivo para un Enum.

Paso 1. Crear un archivo de configuración

alt text

Paso 2. Exploración para el tipo

alt text

Paso 3. Seleccionar el tipo (Namespace.TypeName)

alt text

Paso 4. Ta da - Hecho

alt text

+0

Gracias, no sabía que simplemente podría especificar el tipo y funcionaría. ¿Sabes si es posible especificar listas genéricas para la configuración de la misma manera? –

+0

El archivo de configuración básicamente te permite devolver el tipo que quieras, hasta donde yo sé. Pero en las listas genéricas, ¿te refieres a las colecciones genéricas? – Sung

+0

sí, colecciones genéricas (aunque en mi caso quería una lista) –

0

Hacerlo en un archivo separado como parte de una clase parcial es totalmente aceptable.

0

Si desea poder rellenar objetos complejos a través de archivos de configuración, le sugiero que utilice algunos Dependency Injection Framework a.a. Spring.Net.

4

Para obtener una clase personalizada para mostrar en esa lista, asegúrese de que tiene un constructor por defecto como una de las opciones Es la construcción. Lo aprendí de la manera difícil

2

Para responder al comentario/pregunta de Jeffrey sobre si las listas genéricas son posibles en un archivo de configuración, la respuesta es sí. Solo debe editar manualmente el archivo de configuración XML. Por ejemplo, si tengo la clase siguiente:

public class UrlAlias 
{ 
    public string Name { get; set; } 
    public string BaseUrl { get; set; } 
} 

puedo crear una lista de estos haciendo clic derecho sobre mi archivo de configuración y seleccione Abrir con ...

A continuación, seleccione XML/editor de texto y establecer el valor "tipo" para el nombre completo de la clase, es decir:

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]" 

el XML de configuración completa se vería así:

<?xml version='1.0' encoding='utf-8'?> 
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings"> 
<Profiles /> 
    <Settings> 
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User"> 
     <Value Profile="(Default)"></Value> 
    </Setting> 
    </Settings> 
</SettingsFile> 

Una vez que hace esto, debe tener una lista configurada correctamente del objeto de configuración personalizado que ha creado.

Cuestiones relacionadas