Hier zu bekommen ist die Idee, die ich hatte:Wie alle Abschnitte mit Namen in der sectionapplication in .Net 2.0
Ich möchte eine kleine ausführbare Datei eine app.config-Datei mit mehreren Abschnitten haben, die unter dem section liegen " applicationSettings "(nicht" appSettings ", ich muss nicht in die Datei schreiben). Jeder Abschnitt würde einen Namen haben, der einem Modul entspricht, das geladen werden sollte, wenn es gesetzt ist.
Hier ist ein Beispiel:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Executable" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="FirstModule" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Executable>
<setting name="MyFirstSetting" serializeAs="String">
<value>My awesome feature setting</value>
</setting>
</Executable>
<FirstModule path="path to the modules assembly">
<setting name="ImportantSettingToTheModule" serializeAs="String">
<value>Some important string</value>
</setting>
</FirstModule>
</applicationSettings>
</configuration>
Nun, wenn ich den FirstModule Abschnitt definieren, ich möchte, dass meine Anwendung ihre Montage zu laden. Wenn der Abschnitt nicht definiert ist, sollte das Modul nicht geladen werden. Dies sollte nicht nur für ein Modul, sondern auch für eine noch nicht definierte Anzahl gelten.
Also muss ich im Grunde über die definierten Abschnitte zur Laufzeit herausfinden. Wie würde ich das tun?
Zusätzlich möchte ich, dass dies eine portable ausführbare Datei wird (= es muss auch auf Mono laufen), die abwärtskompatibel zu .NET 2.0 ist.
Es könnte interessant sein, sich das Projekt auf GitHub anzusehen (derzeit unter this commit).
, dass Sie sehr viel sehr geholfen, danke. Ich würde zwei Upvotes geben, um direkt auf mein Beispiel zu verweisen, aber ich kann nicht ... :( – HaMster
Kein Problem, ich bin froh, Ihnen helfen zu können. Vielleicht möchten Sie meine letzte Bearbeitung sehen. Ich habe ein paar Informationen zu 'ConfigurationManager.GetSection' hinzugefügt. Wenn Sie keine weiteren Aktionen in der Konfigurationsdatei ausführen müssen, stellen Sie normalerweise die bevorzugte Methode für den Zugriff auf die Konfigurationsdatei dar. –
Konfiguration config = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None) - Dies öffnet die Konfiguration für die aktuelle Datei app. keine Notwendigkeit zu wissen exe Pfad. – timothy