Je veux créer une implémentation de l'interface IDictionary (Of TKey, TValue) pour fournir une fonctionnalité d'encapsulation.Comment implémenter IDictionary (Of TKey, TValue) dans 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
Lorsque je fais cela, il gémit à propos des méthodes que je n'ai pas implémentées. Quand je choisis d'implémenter les méthodes d'ICollection, les ICollection sont ajoutées mais ensuite j'obtiens toute une pile d'erreurs. Certains d'entre eux se plaignent de méthodes avec des signatures identiques. Par exemple:
Public ReadOnly Property IsReadOnly() As Boolean Implements ICollection(Of KeyValuePair(Of TKey, T)).IsReadOnly
Get
Return IsReadOnly
End Get
End Property
Cette erreur est donc assez facile à résoudre. Changez juste le nom de la méthode parce que nous lui disons quelle méthode elle implémente donc le nom devrait être sans conséquence. Donc, je le change en quelque chose Lick CollectionIsReadOnly. Les problèmes plus difficiles sont comme ceux-ci:
ReadOnly Public Property Count() As Integer Implements ICollection(Of T).Count
Get
Return Count
End Get
End Property
L'erreur est Interface « System.Collections.Generic.ICollection (Of T) est pas mis en œuvre par cette classe. Je ne suis pas sûr de savoir quoi faire de cette erreur. Je ne le comprends même pas vraiment. J'échange pour changer le (Of T) en (Of TValue) mais cela n'a pas aidé.