<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7510.aspx</link><pubDate>Fri, 02 Dec 2005 22:33:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7510</guid><dc:creator>BruteForce</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7510.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7510</wfw:commentRss><description>&lt;P&gt;Απ'ότι φαίνεται η RefreshSection είναι απαραίτητη μόνο όταν χρησιμοποιείς την κλάση ConfigurationManager. Στο παράδειγμα της RefreshSection, πριν την κλήση στη RefreshSection ισχύουν τα παρακάτω που δείχνουν ότι οι αλλαγές που έγιναν δεν είναι&amp;nbsp;ορατές στις ρουτίνες της κλάσης ConfigurationManager, ενώ είναι ορατές στην κλάση Configuration ακόμα και αν&amp;nbsp;χρησιμοποιήσουμε ένα νέο&amp;nbsp;Configuration object. Επίσης οι δοκιμές που έκανα με τις κλάσεις για το custom section δείχνουν ότι οι αλλαγές είναι άμεσα ορατές εφόσον δουλεύουμε με&amp;nbsp;ένα Configuration object.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080&gt;Debug&lt;/FONT&gt;.Assert(appStgCnt == &lt;FONT color=#008080&gt;ConfigurationManager&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;.AppSettings.Count);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080&gt;Debug&lt;/FONT&gt;.Assert(appStgCnt+&lt;FONT color=#0000ff&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt; == config.AppSettings.Settings.Count);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008080&gt;&lt;FONT face="Courier New"&gt;Configuration&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt; config2 = &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080&gt;ConfigurationManager&lt;/FONT&gt;.OpenExeConfiguration(&lt;FONT color=#008080&gt;ConfigurationUserLevel&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;.None);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080&gt;Debug&lt;/FONT&gt;.Assert(appStgCnt+&lt;FONT color=#0000ff&gt;1&lt;/FONT&gt; == config2.AppSettings.Settings.Count);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7503.aspx</link><pubDate>Fri, 02 Dec 2005 21:17:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7503</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7503.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7503</wfw:commentRss><description>&lt;P&gt;Γλούπ! &lt;img src="/cs/emoticons/emotion-3.gif" alt="Surprise [:O]" /&gt; Μου είχε ξεφύγει η RefreshSection method!&lt;/P&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7502.aspx</link><pubDate>Fri, 02 Dec 2005 21:10:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7502</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7502.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7502</wfw:commentRss><description>&lt;P&gt;Οι αλλαγές που γίνονται μέσω του ConfigurationManager γράφονται κατευθείαν στο σκληρό χωρίς να τροποποιούν τις τιμές που έχουν φορτωθεί. Πρέπει να καλέσεις τη μέθοδο RefreshSection για να ξαναφορτωθεί το section το οποίο τροποποίησες. Το documentation του RefreshSection έχει ένα παράδειγμα όπου ανοίγει ένα config αρχείο με την OpenExeConfiguration, κάνει τροποποιήσεις και τις σώζει με τη Save και τέλος τις φορτώνει στη μνήμη με τη RefreshSection.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Set appSettings.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; SetAppSettings(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;bool&lt;/span&gt; refresh)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Get the machine.config file.&lt;/span&gt;&lt;br /&gt;    System.Configuration.Configuration config &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt;&lt;br /&gt;            ConfigurationManager.OpenExeConfiguration(&lt;br /&gt;            ConfigurationUserLevel.None);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; appStgCnt &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; ConfigurationManager.AppSettings.Count;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;string&lt;/span&gt; asName &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"AppSetting"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; appStgCnt.ToString();&lt;br /&gt;&lt;br /&gt;    config.AppSettings.Settings.Add(asName,&lt;br /&gt;        DateTime.Now.ToLongDateString() &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;" "&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt;&lt;br /&gt;        DateTime.Now.ToLongTimeString());&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Save the configuration file.&lt;/span&gt;&lt;br /&gt;    config.Save(ConfigurationSaveMode.Modified);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Refresh the appSettings section so the secction&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// is read from the disk and not from the cache when&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// requested, next time.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;if&lt;/span&gt; (refresh)&lt;br /&gt;        ConfigurationManager.RefreshSection(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"AppSettings"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    GetAppSettings();&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7496.aspx</link><pubDate>Fri, 02 Dec 2005 18:51:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7496</guid><dc:creator>BruteForce</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7496.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7496</wfw:commentRss><description>&lt;P&gt;Τρελή χακεριά!!!&lt;/P&gt;
&lt;P&gt;Πάντως φαίνεται ότι οι νέες Configuration κλάσεις είναι &lt;EM&gt;the way to go&lt;/EM&gt;. Στο Enterprise Library για το .ΝΕΤ 2.0 έχει καταργηθεί το Configuration Application Block εξαιτίας των νέων configuration κλάσεων.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7494.aspx</link><pubDate>Fri, 02 Dec 2005 18:39:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7494</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7494.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7494</wfw:commentRss><description>&lt;P&gt;Σε .NET 1.1 για να αναγκάσεις την εφαρμογή να ξαναδιαβάσει το app.config μπορείς να κάνεις την παρακάτω "βρωμιά":&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;using&lt;/span&gt; System.Reflection;&lt;br /&gt;...&lt;br /&gt;FieldInfo fi1 &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;typeof&lt;/span&gt;(System.Configuration.ConfigurationSettings).GetField(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"_configurationInitialized"&lt;/span&gt;, BindingFlags.Static|BindingFlags.NonPublic);&lt;br /&gt;fi1.SetValue(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;false&lt;/span&gt;);&lt;br /&gt;FieldInfo fi2 &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;typeof&lt;/span&gt;(System.Configuration.ConfigurationSettings).GetField(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"_configSystem"&lt;/span&gt;, BindingFlags.Static|BindingFlags.NonPublic);&lt;br /&gt;fi2.SetValue(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;);&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7493.aspx</link><pubDate>Fri, 02 Dec 2005 18:28:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7493</guid><dc:creator>BruteForce</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7493.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7493</wfw:commentRss><description>&lt;P&gt;Οι δοκιμές που έκανα δείχνουν ότι αν το αρχείο&amp;nbsp;.config τροποποιηθεί εξωτερικά οι νέες κλάσεις ΔΕΝ βλέπουν τις αλλαγές, ακόμα και αν καλέσεις ξανά την &lt;FONT face="Courier New"&gt;ConfigurationManager.OpenExeConfiguration()&lt;/FONT&gt;. Αν οι αλλαγές γίνουν μέσω των configuration κλάσεων τότε αυτές είναι &lt;U&gt;&lt;STRONG&gt;αμέσως&lt;/STRONG&gt;&lt;/U&gt; visible όταν ξαναδιαβαστεί το setting, είτε μέσω ενός ήδη ανοικτού &lt;FONT face="Courier New"&gt;Configuration&lt;/FONT&gt; object ή μέσω ενός νέου που θα επιστρέψει η &lt;FONT face="Courier New"&gt;OpenExeConfiguration&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;Ένα νομίζω ιδιαίτερα χρήσιμο χαρακτηριστικό είναι το ότι η &lt;FONT face="Courier New"&gt;OpenExeConfiguration&lt;/FONT&gt; έχει ένα overload που πέρνει σαν παράμετρο το όνομα του αρχείου με τα settings, συνεπώς δεν είναι ανάγκη να&amp;nbsp;"στοιβάζονται" όλα τα settings στο app.exe.config.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: .NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7487.aspx</link><pubDate>Fri, 02 Dec 2005 16:10:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7487</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7487.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7487</wfw:commentRss><description>&lt;P&gt;Στο .NET Framework 1.1 πέρα από το ότι δεν μπορούσες να γράψεις στο config file, υπάρχει και ένας άλλος περιορισμός κατά τον οποίο ό,τι διαβάζεις από το&amp;nbsp;configuration file είναι ό,τι περιέχεται την στιγμή που ξεκινάει η εφαρμογή σου. Δηλαδή, αν όσο τρέχει η εφαρμογή, αλλάξεις τιμή σε κάποια παράμετρο του configuration file, αυτή τη αλλαγή θα την "αντιληφθεί" ο config reader στην επόμενη εκκίνηση του προγράμματος. Κάτι τέτοιο οδηγεί πολλές φορές στο αναπόφευκτο "οι αλλαγές σας θα ισχύσουν την επόμενη φορά που θα εκκινήσετε την εφαρμογή" dialog box και άλλοτε περιπλέκει τον κώδικα αφού έχεις δύο σενάρια για configuration change, το πρώτο να διαβάζει το config και το δεύτερο να κάνει assign τις αλλαγές πάνω στα objects, κλπ. Γι αυτόν το λόγο, συνήθως κάνω access τα config settings απευθείας μέσω δικής μου κλάσης. Μιας και το ψάχνεις το θέμα, έχει αλλάξει τίποτα σε αυτό; Θα ήταν καλό να ξεφορτωθώ αυτό το wrapper...&lt;/P&gt;</description></item><item><title>.NET 2.0 Configuration Classes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7484.aspx</link><pubDate>Fri, 02 Dec 2005 06:07:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7484</guid><dc:creator>BruteForce</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7484.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=7484</wfw:commentRss><description>&lt;P&gt;Σήμερα έφαγα λίγο χρόνο με τις νέες κλάσεις που έχει το .ΝΕΤ 2.0 για τη διαχείριση των configuration files. To μεγάλο νέο είναι ότι πλέον μπορείς να γράψεις σε ένα configuration αρχείο. Το documentation είναι imho κάκιστο, αλλά τελικά έβγαλα άκρη στο τι ήθελα να κάνω και μετά καθάρισε ο reflector &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile [:)]" /&gt;. Επειδή το αποτέλεσμα μπορεί να φανεί χρήσιμο και σ'άλλους είπα να το βάλω στο dotNetZone.&lt;/P&gt;
&lt;P&gt;Το πρόγραμμα που φτιάχνω&amp;nbsp;ξεκινάει διαβάζοντας&amp;nbsp;μια σειρά από αρχεία mdb από τα οποία αντλεί δεδομένα. ¨Ηθελα λοιπόν να έχω το ποια είναι αυτά τα αρχεία μέσα στο .config της εφαρμογής σε μια μορφή όπως η εξής:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;...&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; &amp;lt;&lt;FONT color=#800000 size=2&gt;metadataFilesInfo&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;metadataFiles&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;filename&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUNIT1.MDB&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUnint Test MDB 1&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;options&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Normal&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;filename&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUNIT2.MDB&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUnint Test MDB 2&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;options&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Normal&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;filename&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUNIT3.MDB&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUnint Test MDB 3&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;options&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;IgnoreErrors&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;filename&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUNIT4.MDB&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NUnint Test MDB 4&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt; /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;metadataFiles&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/&lt;FONT color=#800000 size=2&gt;metadataFilesInfo&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;lt;&lt;FONT color=#800000 size=2&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;To metadataFilesInfo είναι αυτό που ονομάζεται Section Group, ενώ το metadataFiles είναι ένα section. Ένα section επιτρέπεται να εμφανίζεται μόνο μία φορά μέσα στο αρχείο. Μπορεί να προσδιορίζει settings σαν attributes του xml element. Όταν όμως χρειάζεται μια λίστα από εγγραφές όμοιες μεταξύ τους εκεί πρέπει να παίξουμε ένα επίπεδο πιο μέσα με το add&amp;nbsp;ενώ για να διαβάσουμε τις εγγραφές μέσω μιας κλάσης πρέπει να ακολουθήσουμε την τεχνική που περιγράφω παρακάτω.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Αυτό που χρειάζεται είναι να φτιαχτεί (με τον .ΝΕΤ 2.0 τρόπο) μια κλάση για το custom section metadataFiles. Αυτή η κλάση θα έχει για member της ένα collection κάποιου τύπου μέσω του οποίου γίνονται προσπελάσιμες οι εγγραφές. In principle ακούγεται απλό.&amp;nbsp;Ένας κώδικας που διαβάζει αλλά και γράφει το configuration file είναι ο εξής:&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080 size=2&gt;Configuration&lt;/FONT&gt;&lt;FONT size=2&gt; config = &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ConfigurationManager&lt;/FONT&gt;&lt;FONT size=2&gt;.OpenExeConfiguration(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ConfigurationUserLevel&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;.None);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ConfigurationSectionGroup&lt;/FONT&gt;&lt;FONT size=2&gt; csg = config.SectionGroups[&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"metadataFilesInfo"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;];&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFilesSection&lt;/FONT&gt;&lt;FONT size=2&gt; mfs = csg.Sections[&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"metadataFiles"&lt;/FONT&gt;&lt;FONT size=2&gt;] &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;as&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFilesSection&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;;&lt;BR&gt;System.Collections.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;IEnumerator&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; enumerator = mfs.MetadataFiles.GetEnumerator();&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;while&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; (enumerator.MoveNext())&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFileInfo&lt;/FONT&gt;&lt;FONT size=2&gt; info = (&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFileInfo&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;)enumerator.Current;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Console&lt;/FONT&gt;&lt;FONT size=2&gt;.WriteLine(info.FileName + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" Description: "&lt;/FONT&gt;&lt;FONT size=2&gt; + info.Description + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" Options: "&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; + info.Options);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;// Make some change&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;enumerator.Reset();&lt;BR&gt;enumerator.MoveNext();&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFileInfo&lt;/FONT&gt;&lt;FONT size=2&gt; mfi = (&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MetadataFileInfo&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;)enumerator.Current;&lt;BR&gt;mfi.Options = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Optional"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;config.Save();&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Ο κώδικας νομίζω είναι σχετικά απλός. &lt;FONT face="Courier New" color=#008080&gt;MetadataFileInfo &lt;/FONT&gt;είναι η κλάση που αντιστοιχεί σε κάθε γραμμή του configuration file, ενώ &lt;FONT face="Courier New"&gt;&lt;FONT color=#008080&gt;MetadataFilesSection&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;FONT face=Tahoma&gt;η κλάση που αντιστοιχεί στο section.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Ο κώδικας για το πώς πρέπει να φτιαχτούν αυτές οι κλάσεις είναι attached στο post, καθώς και το app.config με τις δηλώσεις του section group και του section.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Ελπίζω να φανεί χρήσιμο &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile [:)]" /&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Brute Force&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;</description></item></channel></rss>