7
votes

Comment créer des paramètres d'application .NET générés par designers portables

Je cherche à modifier la source du Agregistrateur de podcast Doppler dans le but de pouvoir être capable de Exécutez le programme directement à partir de mon lecteur MP3.

Doppler stocke les paramètres d'application à l'aide d'un concepteur Visual Studio généré classe de paramètres , qui par défaut Serialise les paramètres utilisateur dans le répertoire de base de l'utilisateur. Je voudrais changer cela afin que tous les paramètres soient stockés dans le même répertoire que l'EXE. P>

Il semble que cela soit possible en créant une classe de fournisseur personnalisée qui hérite du ParamètresProvider classe. Quelqu'un a-t-il créé un tel fournisseur et souhaiterait partager du code? P>

Mise à jour: strong> J'ai pu obtenir un fournisseur de paramètres personnalisés presque em> en utilisant cette utilisation. échantillon MSDN , c'est-à-dire avec une héritage simple. J'ai été initialement confus au fur et à mesure que Windows Forms Designer a cessé de travailler jusqu'à ce que je fasse cette astuce suggérée à CodeProject : p>

internal sealed partial class Settings
{
    private MySettingsProvider settingsprovider = new MySettingsProvider();

    public Settings()
    {
        foreach (SettingsProperty property in this.Properties)
        {
            property.Provider = settingsprovider;
        }
    ...
  • Pourquoi la nécessité d'assainir le fournisseur en runtime --- au lieu d'utiliser des attributs comme suggéré par MSDN? li>
  • Pourquoi les modifications apportées à la manière dont les paramètres par défaut sont transmis à l'application avec le fournisseur de paramètres par défaut contre la personnalisation? LI> ul> p>


0 commentaires

3 Réponses :


0
votes

juste pour "fermer" la question: la solution quelque peu insatisfaisante que j'ai finie avec était

  1. Créez un fournisseur de paramètres personnalisés, qui hérite de ParamètresProvider et stocke les paramètres dans un fichier XML
  2. Définissez la propriété fournisseur de chacun des paramètres (en sélectionnant la grille entière dans le concepteur) au fournisseur de paramètres personnalisés à l'aide du concepteur

    inconvénients: Le concepteur de formulaires se casse et donne une exception qui dit essentiellement que la classe de fournisseur personnalisée ne peut pas être trouvée. L'exe construit fonctionne cependant bien. Fixer le fournisseur dans le code décrit dans la question rend le travail de concepteur, mais pour une raison quelconque, que je n'ai pas regardé de près, les paramètres ne seront pas sérialisés.

    Il semble que les paramètres portables étaient tout ce qui était nécessaire pour rendre Doppler portable. Que je vais commencer à utiliser Doppler comme mon agrégateur de podcast principal ou coller avec mon agrégateur de ligne de commande homebrew, je verrai.


1 commentaires

Il y a un nouveau commentaire à CodeProject pour la résolution de Winforms Designer Problème: codeProject.com/messages/3562657/... . Fondamentalement, vous devez inclure l'espace de noms dans le nom du fournisseur pour que le concepteur fonctionne.



16
votes

Pourquoi ne pas utiliser la solution CODEPROJECT PORTABLETTSPROVIDAVIDER tel quel (avec quelques modifications mineures)? Je l'ai fait dans mon projet ( streamrecorder.net ) avec succès.

Certains commentaires sur la page du projet étaient utiles: p>


0 commentaires

3
votes

Je sais que cette question est déjà très ancienne. Je veux juste partager ma propre version d'un fournisseur de paramètres portatif que j'ai publié comme package Nuget ici .

L'utilisation est assez simple: p>

// make the default settings class portable
PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);


0 commentaires