定义和使用扩展方法

Defining and Using Extension Methods

我有一个名为 Me.clientsDictionary(Of IPAddress, MyClass),我想从该词典中删除某些条目。以前,字典是 Of IpAddress, Date,下面的代码工作正常:

For Each entry in Me.clients.Where(Function(kv) Me.isInactive(kv.Key).ToArray()    
  Me.clients.Remove(entry.Key)
Next 

在我将字典的值类型更改为自定义 class (MyClass) 之后,我现在得到错误

Public member 'Where' on type 'Dictionary(Of IPAddress, MyClass)' not found.

扩展方法Where()是否只有当字典的Key/Value类型是内置的时候才有效?我如何定义扩展方法以便它与我的 Dictionary(Of IPAddress, MyClass) 一起工作。如果我有词典 Of IPAddress, MyClass Of IPAddress, MyOtherClass,我是否需要为每个词典定义 Where() 扩展名?

从这里更改客户声明:

Private clients = New Dictionary(Of IPAddress, Client)

为此:

Private clients As New Dictionary(Of IPAddress, Client)

前者其实是一样的:

Private clients As Object = New Dictionary(Of IPAddress, Client)

如果你将它转换为可枚举的东西,它可能有一个 Where,但这是一个拖累......

DirectCast(clients, Dictionary(Of IPAddress, Client)).Where(...)

它只是在一个对象内部,所以它看起来像一个对象(而选项 infer 不是)..