vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
KeyNotFoundExeption in abgeleiteter Klasse 
Autor: Schü
Datum: 21.10.10 13:18

Hallo!

Habe eine abgeleitete Klasse von System.Collections.Generic.SortedDictionary(Of String, AlbumStruct)
Dort möchte ich eigentlich die Add und die Remove-Methoden überschreiben. Offensichtlich Falsch von mir gemacht!
Der Clou ist, dass bei einem Leeren sAlbumName der Schlüssel ''Leer'' erzeugt/abgefragt wird.


Friend Class SortedAlbumStruct
        Inherits System.Collections.Generic.SortedDictionary(Of String, _
          AlbumStruct)
 
        Default Public Overloads ReadOnly Property Item(ByVal Index As Integer) _
          As AlbumStruct
            Get
                Try
                    Return MyBase.Item(Keys(Index))
                Catch
                    Throw New IndexOutOfRangeException
                End Try
            End Get
        End Property
 
        Default Public Overloads ReadOnly Property Item(ByVal sAlbumName As _
          String) As AlbumStruct
            Get
                Try
                    If sAlbumName = "" Then sAlbumName = "[Leer]"
                    Debug.Print(MyBase.Count.ToString)
                    Return MyBase.Item(sAlbumName)   '---> Fehler: 
                    ' KeyNotFounmdExeption!
                Catch
                    Throw New IndexOutOfRangeException
                End Try
            End Get
        End Property
 
        Public ReadOnly Property Items() As String()
            Get
                Dim Res(Keys.Count - 1) As String
                Me.Keys.CopyTo(Res, 0)
                Return Res
            End Get
        End Property
 
        Public Shadows Sub Add(ByVal sAlbumName As String, ByVal iNr As Integer)
            If _Vorschau Is Nothing OrElse _Vorschau.Items.Count < 1 Then Exit _
              Sub
 
            If sAlbumName = "" Then sAlbumName = "[Leer]"
 
            If Not Me.ContainsKey(sAlbumName) Then
                Dim X As New AlbumStruct
                X.Add(iNr)
                MyBase.Add(sAlbumName, X)
            Else
                Dim X As AlbumStruct = MyBase.Item(sAlbumName)
                X.Add(iNr)
            End If
 
            Debug.Print(MyBase.Count.ToString)
        End Sub
 
        Public Shadows Function Remove(ByVal sAlbumName As String) As Boolean
            If sAlbumName = "" Then sAlbumName = "[Leer]"
 
            If Not Me.ContainsKey(sAlbumName) Then Return True
            Return MyBase.Remove(sAlbumName)
        End Function
    End Class
Wenn ich nun diese Klasse erstelle und ein Element mit einem leeren String anlege, tritt dabei kein Fehler auf. Nur wenn ich dann .Item("") abfrage tritt ein Fehler auf.

Ich habe schon lange gesucht, aber nichts gefunden.
Bei der Add-Methode wird nach dem Hinzufügen korrekt eine Anzahl von 1 ausgegeben.
Bei der Abfrage dann über Item(sAlbumName) aber ist MyBase.count auf einmal 0!!
Jemand eine Idee?

Achja, die Klasse AlbumStruct könnte genausogut zum Test ein Integer oder String sein.
Die eigentliche Klasse AlbumStruct ist sehr Komplex.
(Windows XP, Framework 4.0)

Schü

Beitrag wurde zuletzt am 21.10.10 um 13:18:34 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
KeyNotFoundExeption in abgeleiteter Klasse1.399Schü21.10.10 13:18
Re: KeyNotFoundExeption in abgeleiteter Klasse775Manfred X21.10.10 15:53
Re: KeyNotFoundExeption in abgeleiteter Klasse780Maas21.10.10 18:35
Re: KeyNotFoundExeption in abgeleiteter Klasse800Schü21.10.10 20:00

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel