2010-03-02 5 views
0

일부 래퍼 기능을 제공하기 위해 IDictionary (Of TKey, TValue) 인터페이스의 구현을 만들고 싶습니다.IDictionary (Of TKey, TValue)를 VB에서 어떻게 구현합니까?

Public Class ExtendedDictionary(Of TKey, TValue) 
    Implements IDictionary(Of TKey, TValue) 

    Private _Dictionary As Dictionary(Of TKey, TValue) 

    Public Sub Add(ByVal key As TKey, ByVal value As T) Implements IDictionary(Of TKey, T).Add 
    'Impl Here' 
    End Sub 

End Class 

내가 이렇게하면 내가 구현하지 않은 방법에 대해 신음합니다. ICollection의 메소드를 구현하도록 선택하면 ICollection이 추가되지만 전체 스택 오류가 발생합니다. 그들 중 일부는 동일한 서명이있는 메소드에 대해 불평하고 있습니다. 예를 들면 다음과 같습니다.

Public ReadOnly Property IsReadOnly() As Boolean Implements ICollection(Of KeyValuePair(Of TKey, T)).IsReadOnly 
     Get 
      Return IsReadOnly 
     End Get 
    End Property 

오류는 수정하기가 쉽습니다. 메쏘드의 이름을 바꾸는 것은 그것이 어떤 메쏘드를 구현 하는지를 알려주기 때문에 이름이 중요하지 않아야한다는 것입니다. 그래서 저는 그것을 Lick CollectionIsReadOnly로 바꿉니다. 열심히 문제는 다음과 같다 :

ReadOnly Public Property Count() As Integer Implements ICollection(Of T).Count 
     Get 
      Return Count 
     End Get 
    End Property 

오류는이 클래스에서 구현되지 않은 인터페이스 'System.Collections.Generic.ICollection (T의)입니다. 이 오류에 대해 무엇을해야할지 모르겠습니다. 나는 그것을 정말로 이해하지 못한다. 나는 (Of T)를 (TValue)로 바꾸기 위해 거래하지만 그건 도움이되지 못했다.

Public ReadOnly Property Count() As Integer Implements System.Collections.Generic.ICollection(Of System.Collections.Generic.KeyValuePair(Of TKey, TValue)).Count 
    Get 
     ' implementation here... 
    End Get 
    End Property 

인텔리 당신이이 선언을 바로 얻을 수 있습니다,하지만 꽤 색다른입니다 :

답변

2

적절한 선언이다.

Public Class ExtendedDictionary(Of TKey, TValue) 
End Class 

커서까지이 줄을 삽입 :이 글을 쓰는하여 시작

Implements IDictionary(Of TKey, TValue) 

당신이 최종 후 Enter 키를 누릅니다) 다음 IDE가 자동으로 필요한 모든 메서드와 속성을 삽입합니다.

관련 문제