Diskuze: Ten problém neviem nazvať, je to v tele príspevku.

C# .NET .NET (C# a Visual Basic) Ten problém neviem nazvať, je to v tele príspevku. American English version English version

Avatar
Libor Šimo (libcosenior):

Povedzme že mám triedu Surovina, ktorá má parametre: Meno, JM a Balenie.

V obslužnej triede mám tieto metódy:

public string NastavNazovSuroviny(Surovina surovina)
{
    return surovina.Meno;
}

public string NastavJednotkuMnozstva(Surovina surovina)
{
    return surovina.Jm;
}

public string NastavMnozstvoBalenia(Surovina surovina)
{
    return surovina.Balenie;
}

Chcel by som z nich spraviť jednu, ale toto:

public string NastavItemSuroviny(Surovina surovina, string Item)
{
    return surovina.Item;
}

nefunguje.
Je mi jasné, že Item nie je string, ale názov premennej, lenže neviem, ako tam zadať ten parameter.

Odpovědět 22.11.2015 7:27
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
ostrozan
Redaktor
Avatar
ostrozan:

To je špatně,

na toto použij vlastnosti

class Surovina
{
public string Meno(get;set);
public int Jm(get;set);
public string Balenie(get;set);

public Surovina()
{
}
}

Surovina maslo= new Surovina();

maslo.Meno="pomazankove"
maslo.Jm = 2;
maslo.Balenie = "velke";

jinak to na co ses ptal bz řešil** switch**

public string NastavItemSuroviny(Surovina surovina, string Item)
{
    switch(Item)
{
case "Meno":  return surovina.Meno; break;
case "Jm":  return surovina.Jm; break;
case "Balenie":  return surovina.Balenie; break;
}
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +2 22.11.2015 10:07
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Lze to vyřešit, ale musíš použít reflexy. Podle příspěvku nepředpokládám, že bys ji měl zmáknutou ;)

Nahoru Odpovědět 22.11.2015 10:09
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Mezi slovem Nastav a příkazem return je dosti zřejmý rozpor. Jinak celá ta konstrukce je dosti podivná. Docela by mě zajímal důvod dělat to takhle... ehm...podivně.

 
Nahoru Odpovědět  +2 22.11.2015 10:47
Avatar
Odpovídá na Milan Křepelka
Libor Šimo (libcosenior):

OK, malo by tam byt VratItemSuroviny().

Nahoru Odpovědět 22.11.2015 10:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět 22.11.2015 10:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na ostrozan
Milan Křepelka:

Pozor ... string based programming. Jestli už to dělat takhle, tak přes enum. Ale i tak bych to pavažoval za něco nepěkného.
Na surovinu se přidá atribut, na což se v takovýhlech konstrukcích zapomene a při nejbližší příležitosti to nebude dělat to co má.

 
Nahoru Odpovědět 22.11.2015 11:01
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Milan Křepelka:

Potom je na čase se s tím seznámit. Nicméně setovat properties přes reflexi je poměrně dosti přímý způsob jak si zpomalit program.

 
Nahoru Odpovědět 22.11.2015 11:05
Avatar
Odpovídá na ostrozan
Libor Šimo (libcosenior):

Len jedna maličkosť.
Tým, že je v case return, break tam je zbytočný.

Nahoru Odpovědět 22.11.2015 11:23
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
ostrozan:

To je pravda - no já většinou nereturnuju přímo z case ale nastavuju nějaký "retval" , který pak returnuju na konci metody(možnost s ním pracovat ještě za switchem) a tak když píšu switch, tak tam ta breaky sázím automaticky :-)

 
Nahoru Odpovědět 22.11.2015 13:19
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 10 zpráv z 10.