在vb.net中实现IDictionary(Of String,Object)类,那时我遇到了错误 [英] Implements IDictionary(Of String, Object)Class in vb.net that time i got an error

查看:115
本文介绍了在vb.net中实现IDictionary(Of String,Object)类,那时我遇到了错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hallo Friends,

当我在VB.net中实现IDictionary(Of String,Object)类时,向我显示了以下错误





1]

Hallo Friends,
When i implementing IDictionary(Of String, Object) class in VB.net It was shown me the following errors


1] "

Error   1   Class 'DataDictionary' must implement 'Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, Object))' for interface 'System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, Object))'"

2] "Error	2	'Public Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of System.Collections.Generic.KeyValuePair(Of String, Object))' and 'Private Function GetEnumerator() As System.Collections.IEnumerator' cannot overload each other because they differ only by return types."

Please help me on this problem.

Imports System.Collections.Generic

Public Class DataDictionary
    Implements IDictionary(Of String, Object)
    Private _ce As CalcEngine.CalcEngine
    Private _dct As Dictionary(Of String, Object)

    Public Sub New(ByVal ce As CalcEngine.CalcEngine)
        _ce = ce
        _dct = New Dictionary(Of String, Object)()
    End Sub

    '---------------------------------------------------------------
#Region "IDictionary<string,object> Members"
 
    Public Sub Add(ByVal key As String, ByVal value As Object) Implements Collections.Generic.IDictionary(Of String, Object).Add
        _dct.Add(key, value)
    End Sub
    Public Function ContainsKey(ByVal key As String) As Boolean Implements System.Collections.Generic.IDictionary(Of String, Object).ContainsKey
        Return _dct.ContainsKey(key)
    End Function
    Public ReadOnly Property Keys() As ICollection(Of String) Implements System.Collections.Generic.IDictionary(Of String, Object).Keys
        Get
            Return _dct.Keys
        End Get
    End Property
    Public Function Remove(ByVal key As String) As Boolean Implements System.Collections.Generic.IDictionary(Of String, Object).Remove
        Return _dct.Remove(key)
    End Function
    Public ReadOnly Property Values() As ICollection(Of Object) Implements System.Collections.Generic.IDictionary(Of String, Object).Values
        Get
            Return _dct.Values
        End Get
    End Property
    Public Function TryGetValue(ByVal key As String, ByRef value As Object) As Boolean Implements System.Collections.Generic.IDictionary(Of String, Object).TryGetValue
        If _dct.TryGetValue(key, value) Then
            Dim expr = TryCast(value, String)
            If expr IsNot Nothing AndAlso expr.Length > 0 AndAlso expr(0) = "="c Then
                value = _ce.Evaluate(expr.Substring(1))
            End If
            Return True
        End If
        Return False
    End Function
    Default Public Property Item(ByVal key As String) As Object Implements System.Collections.Generic.IDictionary(Of String, Object).Item
        Get
            Dim value As Object
            If TryGetValue(key, value) Then
                Return value
            End If
            Throw New Exception("invalid index")
        End Get
        Set(ByVal value As Object)
            _dct(key) = value
        End Set
    End Property
#End Region

    '---------------------------------------------------------------
#Region "ICollection<keyvaluepair><string,object>> Members"
 
    Public Sub Add(ByVal item As KeyValuePair(Of String, Object)) Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).Add
        Dim d = TryCast(_dct, ICollection(Of KeyValuePair(Of String, Object)))
        d.Add(item)
    End Sub
    Public Sub Clear() Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).Clear
        _dct.Clear()
    End Sub
    Public Function Contains(ByVal item As KeyValuePair(Of String, Object)) As Boolean Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).Contains
        Dim d = TryCast(_dct, ICollection(Of KeyValuePair(Of String, Object)))
        Return d.Contains(item)
    End Function
    Public Sub CopyTo(ByVal array As KeyValuePair(Of String, Object)(), ByVal arrayIndex As Integer) Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).CopyTo
        Dim d = TryCast(_dct, ICollection(Of KeyValuePair(Of String, Object)))
        d.CopyTo(array, arrayIndex)
    End Sub
    Public ReadOnly Property Count() As Integer Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).Count
        Get
            Return _dct.Count
        End Get
    End Property
    Public ReadOnly Property IsReadOnly() As Boolean Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).IsReadOnly
        Get
            Return False
        End Get
    End Property
    Public Function Remove(ByVal item As KeyValuePair(Of String, Object)) As Boolean Implements System.Collections.Generic.ICollection(Of KeyValuePair(Of String, Object)).Remove
        Dim d = TryCast(_dct, ICollection(Of KeyValuePair(Of String, Object)))
        Return d.Remove(item)
    End Function
#End Region

    '---------------------------------------------------------------
#Region "IEnumerable<keyvaluepair><string,object>> Members"
    Public Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, Object)) Implements System.Collections.Generic.IEnumerable(Of KeyValuePair(Of String, Object)).GetEnumerator
        Return TryCast(_dct.GetEnumerator(), IEnumerator(Of KeyValuePair(Of String, Object)))
    End Function

#End Region

    '---------------------------------------------------------------
#Region "IEnumerable Members"
    Private Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
        Return TryCast(_dct.GetEnumerator(), System.Collections.IEnumerator)
    End Function

#End Region
End Class

Thanks in Advance
Rupesh Sangve</keyvaluepair></keyvaluepair>

推荐答案

只需重命名其中一个GetEnumerator函数,因为它们只是结果而不是参数。



例如:

Just rename one of the GetEnumerator functions as they are differ by result only, not parameters.

For example:
Public Function GetDictionaryEnumerator() As IEnumerator(Of KeyValuePair(Of String, Object)) Implements Generic.IEnumerable(Of KeyValuePair(Of String, Object)).GetEnumerator
    Return TryCast(_dct.GetEnumerator(), IEnumerator(Of KeyValuePair(Of String, Object)))
End Function


这篇关于在vb.net中实现IDictionary(Of String,Object)类,那时我遇到了错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆