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í.

Diskuze – Lekce 7 - Dědičnost a polymorfismus

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
David Novák
Tvůrce
Avatar
David Novák:28.9.2023 8:00

Ahoj Jaroslave, děkujeme za podnět, který jsem předal k řešení.

 
Odpovědět
28.9.2023 8:00
Avatar
slezak-petr
Člen
Avatar
slezak-petr:6.10.2023 9:25

Ahoj všem
mám třídu:

public class DataObjectMetaData
{
    public string Caption { get; set; }
    public string ClassName { get; set; }
    public List<Command> Commands { get; set; }
    public List<Field> Fields { get; set; }
    public List<Link> Links { get; set; }
}

public override string ToString()
{
    string text ="";

    text += "Caption: " + this.Caption + "\r\n";
    text += "ClassName: " + this.ClassName + "\r\n";
    // text += " ... " + "\r\n";

    return text;
}

a jde mi o class.ToString();

a to o tyto Listy<>

public List<Command> Commands { get; set; }
public List<Field> Fields { get; set; }
public List<Link> Links { get; set; }

Kde Command, Field a Link
mají inplementovanou metodu ToString()

Takže mi funguje toto:

foreach (Field f in Fields)
{
    text += "\t" + f.ToString() + "\r\n";
}

Ale já hledám cestu (dědičnost z?) jak to nedeklarovat ručně, ale nějak automaticky
našel jsem cestu přes GetProperties
ale jak získat objekt, abych s ním mohl pracovat jako s listem?

string text = "{";

foreach (var prop in type.GetProperties())
{
    string pName = prop.Name;
    var pValue = prop.GetValue(this, null);
    string pType = prop.PropertyType.ToString();
    bool bList = pType.StartsWith("System.Collections.Generic.List");


    if (!bList)
    {
        text += String.Format("Namespace: {5} {2}{0}{2}: {2}{1}{2} | Type is: {3} | Is list: {4}", pName, pValue, "\"", pType, bList, nmsp);
    }
    else
    {
        var objProp = type.GetProperty(pName);
        PropertyInfo info = type.GetProperty(pName);
        // **tady získat z objProp List<Field> Fields**
    }

    count++;
    if (count < totalCount) text += ", ";
    text += "\r\n";
}

text += "}";

Listů List<?> mám ve třídě asi sedm
a nejde mi o to udělat ručně sedmkrát foreach
ale spíš hledám správnou cestu, jak by se to mělo udělat

Odpovědět
6.10.2023 9:25
Čím víc se učím, tím víc mi přijde, že toho ještě mnoho neumím
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 2 zpráv z 42.