Vlastnost   otázka

C#, XML

Dobrý den.

Mám problém s tímto kódem: asi nefunguje:

public class Neco
{
    private string _Neco;
    public string Neco_
    {
        get
        {
           return _Neco;
        }
        set
        {
           _Neco = value;
        }
    }
    public Neco()
    {
        // instance xml dokumentu
        _Neco = doc.SelectSingleNode("/neco/_Neco").InnerText;
    }
}

Jak je zřejmé, jde o třídu s jednou vlastností. Ale když ji nějakým způsobem zavolám, např:

Neco n = new Něco();
Label.Text=n.Neco_;

tak mi to nefunguje...

Nevíte prosím proč?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No jednak máte chybu v deklaraci proměnné (Něco vs. Neco) a jednak máte tu vlastnost naprosto dementně pojmenovanou (název s podtržítkem na konci).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1) chyby jsem si všiml, ale je jen tady. u mě v kódu ne.

2) proč?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už jste někdy viděl takto pojmenované veřejné členy třídy? Přečtěte si něco o všeobecně uznávaných konvencích pojmenovávání, třeba zde:

http://www.vbnet.cz/clanek--62-konvence_...

S takovými názvy jaké používáte vy by vás všude vyrazili. Nainstalujte si FxCop, ten analyzuje váš kód a mimo jiné upozorní i na nevhodné názvy.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A jinak samozdřejmě názvy proměných jsou smyšlené. Ve zkutečnosti jsou jině ( ovšem podtržítko tam je :-D )

nahlásit spamnahlásit spam 0 odpovědětodpovědět

"Nefunguje" je velmi široký pojem. Co přesně to dělá resp. nedělá? Vypíše to chybovou hlášku? Nezkompiluje se to? Neudělá to nic? Začnou po obrazovce blikat červené kosočtverce? Pokud nám nesdělíte tohle, tak vám nemůžeme poradit, můžeme akorát rýpat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Z těch stringů nemůžu dostat data, jakoby se pri mětodě Neco() nenaplnily

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Při kódu:

Imports System.Xml
Public Class Class1
    Dim doc As New XmlDocument()
    Dim _Neco As String

    Property Neco() As String
        Get
            Return _Neco
        End Get
        Set(ByVal value As String)
            _Neco = value
        End Set
    End Property

    Sub New()
        doc.Load("mydoc.xml")
        Neco = doc.SelectSingleNode("Neco/Neco_").InnerText

    End Sub

 
End Class

XMLku:

<?xml version="1.0" encoding="utf-8"  ?>
<Neco>
  <Neco_>
    Ahojky!
    Jak se máš?
    Co děláš?
  </Neco_>
</Neco>

A kodu ve formu:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As New Class1
        RichTextBox1.Text = a.Neco()
    End Sub

je richtextbox1.text rovno hodnotě "

Ahojky!

Jak se máš?

Co děláš?

"

jak má. Nevím, ale ve VéBéčkách (VB.NET :-) ) to je takto ne?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Problém nebude v deklaraci, ale v načítání z toho XML. Zkuste si do get {} dát vracení nějakého napevno daného řetězce, například "Hello, World!" a uvidíte že to bude fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback