定义和使用扩展方法
Defining and Using Extension Methods
我有一个名为 Me.clients
的 Dictionary(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 不是)..
我有一个名为 Me.clients
的 Dictionary(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 不是)..