What should the name of this class be?

Posted by Tim Murphy on Stack Overflow See other posts from Stack Overflow or by Tim Murphy
Published on 2010-04-04T13:11:12Z Indexed on 2010/04/04 13:13 UTC
Read the original article Hit count: 261

Filed under:
|
|

Naming classes is sometimes hard. What do you think name of the class should be?

I originally created the class to use as a cache but can see its may have other uses. Example code to use the class.

Dim cache = New NamePendingDictionary(Of String, Sample)

Dim value = cache("a", Function() New Sample())

And here is the class that needs a name.

''' <summary>
''' Enhancement of <see cref="System.Collections.Generic.Dictionary"/>. See the Item property
''' for more details.
''' </summary>
''' <typeparam name="TKey">The type of the keys in the dictionary.</typeparam>
''' <typeparam name="TValue">The type of the values in the dictionary.</typeparam>
Public Class NamePendingDictionary(Of TKey, TValue)
    Inherits Dictionary(Of TKey, TValue)

    Delegate Function DefaultValue() As TValue

    ''' <summary>
    ''' Gets or sets the value associated with the specified key. If the specified key does not exist
    ''' then <paramref name="createDefaultValue"/> is invoked and added to the dictionary. The created
    ''' value is then returned.
    ''' </summary>
    ''' <param name="key">The key of the value to get.</param>
    ''' <param name="createDefaultValue">
    ''' The delegate to invoke if <paramref name="key"/> does not exist in the dictionary.
    ''' </param>
    ''' <exception cref="T:System.ArgumentNullException"><paramref name="key" /> is null.</exception>
    Default Public Overloads ReadOnly Property Item(ByVal key As TKey, ByVal createDefaultValue As DefaultValue) As TValue
        Get

            Dim value As TValue

            If createDefaultValue Is Nothing Then
                Throw New ArgumentNullException("createValue")
            End If

            If Not Me.TryGetValue(key, value) Then

                value = createDefaultValue.Invoke()
                Me.Add(key, value)

            End If

            Return value

        End Get

    End Property

End Class

© Stack Overflow or respective owner

Related posts about dictionary

Related posts about cache