Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Adam Ježek
Tvůrce
Avatar
Adam Ježek:26.3.2015 17:46

Ahoj,
mám v C# třídu, ve které zjišťuju číslo z App.config. Problém je v tom, že když se pokusím naparsovat něco ve stylu "sdgaretg", tak místo aby to spadlo s chybou, kód pokračuje dál(chyba se uloží do onoho intu), chyba nastane, až když s tim intem chci pracovat.
Vypadá to nějak takto:

class AppConfiguration {
    public string ComPort { get { return System.Configuration.ConfigurationManager.AppSettings["comport"]; } }
    public string Station { get { return Environment.MachineName; } }
    public string ConnectionString { get { return System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; } }

    //tohle parsování:
    public int TimeoutMins { get { return int.Parse(System.Configuration.ConfigurationManager.AppSettings["timeoutmins"]); } }
}

pak někde v kódu zavolam

AppConfiguration appConfiguration = new AppConfiguration();

což proběhne bez problémů, chybu to vyhodí např. u

if (timeoutTime >= appConfiguration.TimeoutMins)

Jak zařídit, aby to vyhodilo chybu hned při té inicializaci?
Dík

Odpovědět
26.3.2015 17:46
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:26.3.2015 17:51

Jestli to jsou statické data, tak si je ulož a pak je jen zvenčí používej.

Jestli to jsou dynamické data, tak asi nejlehčí způsob je projet to reflexí a dotázat se na ně, ale to je takové řešení nakopačku :D

 
Nahoru Odpovědět
26.3.2015 17:51
Avatar
Odpovídá na Adam Ježek
sadlomaslox25:26.3.2015 20:26

ted tam mas neco jako lazy loading bez cachovani. predel si to na eager loading s cachovanim, tj. udelej ve tride konstruktor, data z appconfigu vytahej v konstruktoru do privatnich promenych a ty zpristupni navenek pomoci get property.

 
Nahoru Odpovědět
26.3.2015 20:26
Avatar
Adam Ježek
Tvůrce
Avatar
Adam Ježek:26.3.2015 20:31

diky za snahu, ale naprosto vam oboum rozumim :D neslo by to nejak... min slozite, popripadne s odkazem na msdn? :D

Nahoru Odpovědět
26.3.2015 20:31
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:26.3.2015 20:38
public string ComPort { get { return System.Configuration.ConfigurationManager.AppSettings["comport"]; } }

=>

private string comPort;
public string ComPort { get { return comPort; } }
  • v ctoru uděláš
comPort = System.Configuration.ConfigurationManager.AppSettings["comport"];

Ale říkám, jestli se ty data nějakým způsobem dynamicky mění, tak to projdi reflexí (dynamicky se zkusíš zeptat na všechny vlastnosti a můžeš si to tak nechat).

nějak takto:

foreach (var property in this.GetType().GetProperties(System.Reflection.BindingFlags.GetField))
{
    object a = property.GetValue(this);
}
Editováno 26.3.2015 20:39
 
Nahoru Odpovědět
26.3.2015 20:38
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:26.3.2015 20:41

asi sme si nerozuměli, já řešim to parsování na int, kde to nechce vyhodit vyjímku

Nahoru Odpovědět
26.3.2015 20:41
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:26.3.2015 20:46

To že se na to odkážeš ti tu vyjímku vyhodí...

 
Nahoru Odpovědět
26.3.2015 20:46
Avatar
Andrej Farkaš:31.3.2015 15:20

Nebolo by lepšie používať naozajstné settings daného assembly, ako <add key="" value=""> v configu? Tiež to budeš mať v configu + tam budeš mať typ danej hodnoty (bool, int atď..), ak sa nemýlim.
Ak si dobre pamätám, môžeš tam mať default hodnotu, ale to sa dá vyriešiť aj v tvojom riešení cez TryParse.

Nahoru Odpovědět
31.3.2015 15:20
Live. Love. Learn.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.