9
votes

Comment lire Personnalisé XML à partir de l'app.config?

Je veux lire la section XML personnalisée à partir du app.config d'un service Windows C #.

Comment puis-je y aller?

Le XML est ci-dessous : xxx


2 commentaires

Vous manquez votre XML ou il a été avalé d'une manière ou d'une autre.


Ne soyez pas coincé sur la façon dont votre XML devrait regarder dans App.config. Sois juste heureux ça marche.


4 Réponses :


5
votes

Ce que vous voulez faire est de lire sur Sections de configuration personnalisées .


3 commentaires

Et bonne chance aux noobs qui sont assez courageux pour faire ça! Ils peuvent être très déroutants pour un nouveau développeur.


True, la méthode .NET 1.X où vous avez implémenté une interface et que vous devez jouer avec le XML était beaucoup plus facile à comprendre, imo.


J'ai trouvé cette série d'articles sur codeProject ( codeProject.com/kb/dotnet/mysteriesofconfiguration.aspx < / a>) être une bonne explication sur le sujet.



14
votes

Dans un projet, j'ai développé, j'utilise quelque chose de similaire pour la configuration que j'ai trouvée. Je crois que l'article a été appelé le dernier gestionnaire de la section de configuration dont vous aurez besoin (je ne trouve pas de lien de travail, peut-être que quelqu'un peut le lier pour moi).

Cette méthode prend ce que vous voulez faire un pas plus loin et désémarifier réellement l'objet en mémoire. Je viens de copier du code de mon projet, mais il devrait être assez simple de prendre un pas en arrière si tout ce que vous voulez est le XML. P>

Premièrement, vous devez définir une classe qui gère vos paramètres de configuration. p> xxx pré>

MAINTENANT, dites que vous souhaitez charger une section de configuration ... Super facile, jeté au type d'objet que vous attendez à XML sérialisez et passez la section que vous recherchez (dans ce cas SearchSettings Code>. P>

<?xml version="1.0" encoding="utf-8" ?>
<SearchSettings type="Eagle.Search.SearchSettings, Eagle">
  <NumThreads>4</NumThreads>
</SearchSettings>


4 commentaires

Cela ressemble à un lien stable: sites.google.com/site/craigandera/craigs-stuff/clr-workings/ ... . Le seul problème que je vois avec son approche est si vous avez une tonne de ces sections, elle sera jonchée de déclarations de type. Mais vous pouvez vous contourner cet inconvénient en les collant ensemble dans une section et en faisant un plus grand type. En tant que tel, cela semble assez viable et un piratage assez élégant.


Merci! C'était très utile.


Phil Haack a effectué une version mise à jour basée sur l'approche de Craig qui prend en charge le rechargement de la configuration si le fichier change. Le formatage est tout cassé en mouvement vers son nouveau blog, mais le lien est Haacked .Com / Archive / 2004/06 / 24 / ...


iconfigurationSectionHandlerler Comme indiqué sur msdn.microsoft.com/Query/... a été obsolète depuis longtemps .



0
votes

J'utilise personnalisé XML dans mon config.app. Fichier et créer une application.xsd à partir de celui-ci. Le fichier XSD inclut le schéma du fichier config.app. Ensuite, le fichier XSD peut être traduit vers une classe VB ou un fichier de classe C # à l'aide de 'xsd.exe'. Maintenant, tout ce que vous avez à faire est de désérialiser le configfile à la classe.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="CustomConfig" type="Object" />
    </configSections>

    <CustomConfig>
        <ActiveEnvironment>QAS</ActiveEnvironment>
        <Environments>
            <Environment name ="PRD" log="Y">
            </Environment>
            <Environment name ="QAS" log="N">
            </Environment>
            <Environment name ="DEV" log="Y">
            </Environment>
        </Environments>
    </CustomConfig>

</configuration>


2 commentaires

Déposer votre type en XML puis générer automatiquement une classe de celle-ci semble assez convaincante. Comment «Créez-vous une App.xsd de celui-ci»? +1 Lorsque vous ajoutez ces instructions à votre réponse;)


Vous pouvez créer le XSD à partir de Vs. Créez un exemple de fichier XML, puis dans la barre d'outils de VS2017, il existe un menu 'XML' avec une option "Créer un schéma". Plus d'informations sur MSDN à MSDN.MICROSOFT.COM/EN-US/LIBRARY/MS255829 .aspx



5
votes

Etant donné que iconfigurationSectionHandler est obsolète, je pensais qu'il convient de mentionner que vous pouvez toujours mettre en œuvre une section sérialisée pure simplement en remplissant configurationectionection.deserialiseection et n'appelle pas la mise en œuvre de la base.

Voici un exemple très fondamental que je réutilise beaucoup. Une section de configuration simple qui charge un graphique d'objet à partir de XAML en ligne. (Naturellement, vous pouvez mettre en œuvre avec xmlSerializer à la place) xxx


1 commentaires

+1 ConfigurationsSection.DesérialiseSection est un économiseur de vie depuis sa plus facile itération sur le nœud XML CFG pertinent au lieu de traiter avec des annotations avec des différentes annotations et de l'exposition des éléments de configuration statiques / fortement sûrs