Genericka metoda – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Genericka metoda – .NET – Fórum – Programujte.comGenericka metoda – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
jirka
~ Anonymní uživatel
284 příspěvků
1. 10. 2011   #1
-
0
-

Ahojte,

potřeboval bych poradit s jednou generickou metodou, která by měla sloužit pro načítání nastavení z db. Moje představa je taková, že metoda bude vypadat nějak následovně:

SettingsManager.GetValue<int>("JMENO_PARAMETRU_V_DB");

S tím, že metoda už vrátí parametr ve správném typu. Zatím mam tuto část ale nevím, jak proměnnou result přetypovat abych do ní mohl uložit potřebnou hodnotu podle typu.

public static T GetValue<T>(string valueName)
{
	T result = default(T);

            if (typeof(T).IsValueType || typeof(T).FullName == "System.String")
            {
                result = default(T);
            }
            else
            {
                result = Activator.CreateInstance<T>();
            }

            return result;
        }

Děkuji za pomoc

Nahlásit jako SPAM
IP: 89.233.158.–
Reklama
Reklama
1. 10. 2011   #2
-
0
-

Ahoj,

nevím přesně co je tvým cílem a proč to řešíš vlastními silami, ale třeba ti tohle trochu pomůže. Skutečně obecná metoda, která vrátí hodnotu zkonvertovanou na typ T by měla fungovat zhruba následovně.

  1. Pokud je vstupní hodnota null, vrátí default(T).
  2. Pokud je vstupní hodnota typu T, vrátí vstupní hodnotu.
  3. Pokud existuje vhodný TypeConverter, použije ho a vrátí výsledek.
  4. Pokud je vstupní hodnota typu string a pokud typ T má statickou metodu TryParse, tak ji použije a vrátí výsledek. Tahle část slouží ke zvýšení výkonu a měla by se použít jen pro nejběžnější typy (int, long, bool, DateTime, decimal, double a float).
  5. Poslední možností je pak využití metody Convert.ChangeType. V této části je dobré ošetřit situace, kdy T je Nullable<TValue>.

Zdrojový kód ti sem nedám, ale věřím, že to s pomocí googlu už zvládneš.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 63 hostů

Podobná vlákna

Genericka metóda — založil java

Genericka trida s omezenim — založil qwertys

Rekurzivní metoda — založil Nefaritus

EF 5.0 Metoda LOAD vs. WHERE — založil VladislavK

Hlavní metoda — založil ViliX64

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý