My.setting   zodpovězená otázka

VB.NET

Ahoj,

chtěl jsem se zeptat, jestli není nějaký příkaz na tohle:

Nevím, kolik budu mít těch My.setting nastavený, abych mohl uložit nějaký číslo.

Tak nedá se nějaký příkazem přidat my.setting? jako třeba My.setting.add("cislo1")

my.setting.cislo1 = 123456789

Předem děkuji za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Designer vytváří třídu Setting a ta se kompiluje. Jednotlivé nastavení jsou property, tudíž vytvářet za běhu property ve třídě je, dost problém, resp. se to nedělá.

Jednodušší je napsat si nějaký vlastní systém pro ukládání takových hodnot (do xml, txt, csv, databáze ...).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi budu muset ukládat do txt. Děkuji za odpověd

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dá se to lehce udělat za cenu toho, že nebude přímý přístup k dané vlastnosti, ale pouze vámi naznačený přístup pomocí jména vlastnosti. Také se dá udělat konfigurační hodnota typu Collection, do které lze přidávat/odebírat libovolné hodnoty, což by také šlo použít.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle jsem zkoušel, než jsem napsal, že je třeba asi napsat vlastní configurátor.

Nedařilo se mi to zprovoznit. Mohl by jste napsat, jakou kolekci je možné pro to použít ?

Pokud si tedy nemusím upravit třeba dictionary(string, string) o nějakou serializaci do xml.

Resp. jestli je hotová třída (collection) se serializací obsahu ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejedná se o žádnou serializaci dat, ale o skutečnou kolekci hodnot reprezentovanou klasickým XML v konfiguračním souboru. Je to poměrně obsáhlé téma a trvalo mi docela dlouho to kompletně pochopit, ale výsledek stojí za to.

http://msdn.microsoft.com/en-us/library/...

http://www.codeproject.com/Articles/1646...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, pokud hledáte něco pokročilejšího než Settings File, můžete si napsat vlastní konfigurační sekce popisující vámi zvolenou strukturu XML konfigurace. Tuto konfiguraci pak umístíte do .config souboru, ve kterém ale také musíte konfigurační sekci zaregistrovat.

Podívejte se například na tento článek, ve kterém je uvedena a použita vlastní třída konfigurační sekce SignCertificateConfigurationSection:

http://www.dotnetportal.cz/blogy/15/Null...

Nebo tento článek:

http://www.dotnetportal.cz/clanek/138/Ja...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud vám nevyhovují typové settings, tak je asi nejjednodušší použít klasické "AppSettings".

Dim config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

'Přidání nebo změna hodnoty
config.AppSettings.Settings.Remove("Cislo")
config.AppSettings.Settings.Add("Cislo", 5.ToString())

'Uložení změn
config.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("appSettings")

'Čtení
Dim cislo1 = CType(config.AppSettings.Settings.Item("Cislo").Value, Int32)
'Nebo
Dim cislo2 = CType(System.Configuration.ConfigurationManager.AppSettings.Item("Cislo"), Int32)

Je potřeba přidat referenci na System.Configuration.dll.

Kód způsobí zápis hodnoty do config souboru takto:

<configuration>
...
    <appSettings>
        <add key="Cislo" value="5" />
    </appSettings>
...
</configuration>

Pozor ale, že při ladění ve VS se Vám bude zdát, že se hodnoty neukládají. To je způsobené tím, že kód mění bin\Debug\jmenoexe.exe.Config resp. bin\Debug\jmenoexe.vshost.exe.Config, nikoliv App.config v projektu. A při novém buildu nebo spuštění z VS jsou tyto config soubory přehrány tím App.config.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Tak tohle jsem taky neznal, děkuji.

Jen poznamenám, že je třeba referencovat System.Configuration.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To jo, to tam píšu "Je potřeba přidat referenci na System.Configuration.dll." :)

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Super děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback