Ето каква идея имах:
Искам малък изпълним файл да има файл app.config с множество секции, които се намират под sectionGroup "applicationSettings" (не "appSettings", не е нужно да пиша във файла). Всеки раздел ще има име, съответстващо на модул, който трябва да бъде зареден, ако е зададен.
Ето един пример:
<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>
Сега, ако дефинирам секцията FirstModule, искам приложението ми да зареди асемблирането си. Ако секцията не е дефинирана, модулът не трябва да се зарежда. Това трябва да е вярно не само за един модул, но и за още неопределен брой от тях.
Така че основно трябва да разбера за дефинираните секции по време на изпълнение. Как бих го направил?
Освен това искам това да стане преносим изпълним файл (= трябва да работи и на Mono), който е обратно съвместим с .NET 2.0.
Може да е интересно да разгледате проекта в GitHub (в момента в този ангажимент).