2009-03-02 9 views
9

J'utilise la classe Settings dans mon projet .NET. Je remarque dans l'éditeur que seuls certains types sont disponibles pour être utilisés comme types pour les propriétés individuelles dans la classe Settings. Et si je voulais avoir une propriété qui était une énumération de mon code ou d'une collection générique par exemple? Comment pourrais-je l'implémenter? Je suppose que je peux le faire dans un fichier séparé en utilisant le mécanisme de classe partielle (puisque les paramètres est déjà défini comme une classe partielle) mais je veux voir si quelqu'un est d'accord avec cela et s'il y a un moyen pour le faire dans l'éditeur.Utilisation de paramètres avec des types complexes

+0

Je ne suis pas sûr de bien comprendre votre question, surtout la partie sur l'éditeur et les "certains types sont disponibles pour être utilisés comme types", pouvez-vous le clarifier ou le reformuler? – mbillard

+0

Eh bien, si vous créez un fichier Settings.settings dans votre projet, il existe un éditeur que vous pouvez utiliser pour définir le type de données, le nom, etc. d'un paramètre. Vous choisissez le type de données pour un paramètre d'une zone TreeList. Cette zone TreeList ne fait référence qu'à certains types. Les types dans mon assembly ne sont pas des références. –

+0

référencé * pas de références ... :) –

Répondre

10

Créez un nouveau fichier "Settings" pour ajouter un type de choix complexe/défini par l'utilisateur. Voici un how-to pour un Enum.

Étape 1. Créer un fichier de paramètres

alt text

Étape 2. Parcourir pour le type

alt text

Étape 3. Sélectionner le type (Namespace.TypeName)

alt text

Étape 4. Ta da - Fait

alt text

+0

Merci, je ne savais pas que vous pouviez simplement spécifier le type et cela fonctionnerait. Savez-vous s'il est possible de spécifier des listes génériques pour les paramètres de la même manière? –

+0

Le fichier de paramètres vous permet essentiellement de retourner tout type que vous voulez, autant que je sache. Mais par listes génériques, vous voulez dire des collections génériques? – Sung

+0

oui, des collections génériques (bien que dans mon cas je voulais une liste) –

0

Le faire dans un fichier séparé en tant que partie d'une classe partielle est totalement acceptable.

0

Si vous voulez pouvoir remplir des objets complexes à l'aide de fichiers de configuration, je suggère d'utiliser un cadre d'injection de dépendances. Spring.Net.

4

Pour obtenir une classe personnalisée à afficher dans cette liste, assurez-vous qu'il a un constructeur par défaut comme l'un de ses options de construction. J'ai appris cela à la dure

2

Pour répondre au commentaire/à la question de Jeffrey sur la possibilité d'avoir des listes génériques dans un fichier de paramètres, la réponse est oui. Il vous suffit de modifier le fichier xml Settings manuellement. Par exemple, si je la classe suivante:

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

Je peux créer une liste de ceux-ci par un clic droit sur mon fichier de paramètres et sélectionnez Ouvrir avec ...

Choisissez ensuite XML/éditeur de texte, et définir la valeur "type" au nom de classe complet, à savoir:

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

xml paramètres complets ressemblerait à ceci:

<?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> 

Une fois cela fait, vous devriez avoir une liste correctement configurée de l'objet de paramètres personnalisés que vous avez créé.