Diskuze: Univerzálna metóda
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 19 zpráv z 19.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Volanie metódy by mylo byť:
skladnik.Nacitaj(skladnik.Osoby, "osoby.xml");
skladnik.Nacitaj(skladnik.DhmZaznamy, "dhm.xml");
skladnik.Nacitaj(skladnik.KhmZaznamy, "khm.xml");
Skúšal som použiť var (dátový typ až pri preklade programu), ale nefungovalo mi to. Nedal sa použiť ako vstupný parameter metódy.
Můžeš zkusit tomu dát parametr ObservableCollection<T> param, čímž vlastně řekneš, že parametr je jakákoliv pozorovatelná kolekce.
1. var už znáš za doby kompilace. Zkus si napsat jen "var a;" a ani to nezkompiluješ. On si za kompilace najde typ podle pravé strany. Jestli chceš opravdu run-time variable, která může nést vše, použij dynamic.
2.
public T Nacitaj<T>(string Subor)
where T: new()
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
if (File.Exists(Subor))
{
using (StreamReader sr = new StreamReader(Subor))
{
return (T)serializer.Deserialize(sr);
}
}
else
return new T();
}
Chápeš špatně význam slova var (resp. jeho použití).
Var v C# neznamená, že tam můžeš strčit cokoliv, ale že si program sám
domyslí z pravé strany, co za typ to je.
Třeba
var osoba = new Osoba("Karel");
je to samé, jako když by jsi napsal
Osoba osoba = new Osoba("Karel");
-> do proměnné osoba už nemůžeš uložit nic jiného než instanci třídy Osoba nebo jeho potomků.
Použití var je omezené, nemůžeš ho použít třeba pro parametry metody, protože tam překladač nepozná, jakého typu by ten parametr měl být.
Musí tam byť tá návratová hodnota? Nešlo by to spraviť void?
Naco? Momentálně vytvaris 2x instanci. Proste v ctoru nacti 3 kolekce a mas.
Jane, nech sa snažím, ako sa snažím, neviem ako použiť tvoju dynamickú metódu.
Jedná se o šablonovou metodu, kdyžtak si o tom něco nastuduj.
Osoby = Nacitaj<ObservableCollection<Osoba>>("osoby.xml");
Jan Vargovský (pako), patrik.valkovic ďakujem veľmi pekne. Vyzerá to tak, že to je presne to, čo potrebujem.
Patrik, ako by si upravil na šablónu túto metódu?
public void UlozDhm(string subor)
{
XmlSerializer serializer = new XmlSerializer(DhmZaznamy.GetType());
using (StreamWriter sw = new StreamWriter(subor))
{
serializer.Serialize(sw, DhmZaznamy);
}
}
Skúšam to, ale nedarí sa mi, ešte som úplne nepochopil princíp.
Nejsem teda patrik, ale snad můžu odpovědět 
public void Uloz<T>(T instance, string subor)
{
XmlSerializer serializer = new XmlSerializer(instance.GetType());
using (StreamWriter sw = new StreamWriter(subor))
{
serializer.Serialize(sw, instance);
}
}
Zavoláš to jako:
Uloz(DhmZaznamy, "blabla.xml");
Už tam nemusíš explicitně psát do špičatých závorek typ, protože tam ten typ předáváš v parametru, takže on si ho zjistí.
Díky Jane, nevedel som stanoviť parameter DhmZaznamy, T instance sa mi
páči. 
Asi som úplne blbý. Nie som schopný vyriešiť túto metódu šablónou.
public void ZoradDhm()
{
DhmZaznamy = new ObservableCollection<DhmZaznam>(DhmZaznamy.OrderBy(a => a.Vcm));
}
Však nikde proměnnou DhmZaznamy nepředáváš. Pokud ta metoda nemá
přístup k proměnné, nemůžeš s ní logicky pracovat.
Pokud chceš se šablonami pracovat, tak si o nich něco nastuduj, ale nečekej,
že tu budeme řešit každý tvůj problém.
V C++ jsou templaty, tak proto. Ale pozor, není to úplně to samé. V C# je to taková odnož.
Zobrazeno 19 zpráv z 19.