Pregunta

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

Supongo que puedo hacerlo en un archivo separado utilizando el mecanismo de clase parcial (dado 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 de hazlo dentro del editor.

¿Fue útil?

Solución

Crear un nuevo " Configuración " Archivo para agregar un tipo de elección complejo / definido por el usuario. Aquí hay una guía para un Enum.

Paso 1 . Crear un archivo de configuración

alt text

Paso 2 . Busque el tipo

alt text

Paso 3 . Seleccione el tipo (Namespace.TypeName)

alt text

Paso 4 . Ta da - Hecho

alt text

Otros consejos

Para obtener una clase personalizada para mostrar en esa lista, asegúrese de que tenga un constructor predeterminado como una de sus opciones de construcción. Aprendí esto de la manera difícil

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 tienes que editar el archivo de configuración xml manualmente. Por ejemplo, si tengo la siguiente clase:

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

Puedo crear una lista de estos haciendo clic derecho en mi archivo de configuración y seleccionando Abrir con ...

Luego elija XML / Text Editor, y configure el " Tipo " valor para el nombre de clase completamente calificado, es decir:

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

El xml de configuración completo 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 haga esto, debe tener una lista configurada correctamente del objeto de configuración personalizada que creó.

Es totalmente aceptable hacerlo en un archivo separado como parte de una clase parcial.

Si desea poder rellenar objetos complejos a través de archivos de configuración, sugeriría usar un Marco de inyección de dependencias, por ejemplo, Spring.Net.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top