【发布时间】:2010-11-24 12:29:30
【问题描述】:
我有一个对象参数,我需要检查该对象是否在 vb.net 中实现了指定的接口。如何测试?
谢谢。
【问题讨论】:
-
这是一个很好的问题,与我在 google 中的搜索查询完全匹配并且有答案。
标签: vb.net
我有一个对象参数,我需要检查该对象是否在 vb.net 中实现了指定的接口。如何测试?
谢谢。
【问题讨论】:
标签: vb.net
使用TypeOf...Is:
If TypeOf objectParameter Is ISpecifiedInterface Then
'do stuff
End If
【讨论】:
requiredInterface.IsAssignableFrom(representedType)
requiredInterface和representedType都是类型
【讨论】:
我还发现 Scott Hansleman 的 article 对此特别有帮助。在其中,他建议
C#
if (typeof(IWhateverable).IsAssignableFrom(myType)) { ... }
我最终做了:
VB.Net
Dim _interfaceList As List(Of Type) = myInstance.GetType().GetInterfaces().ToList()
If _interfaceList.Contains(GetType(IMyInterface)) Then
'Do the stuff
End If
【讨论】:
我有一个List(Of String),而TypeOf tmp Is IList 返回False。 List(Of T) 实现了多个接口(IEnumerable、IList、...),并且只检查一个需要在 VB 中使用以下 sn-p:
If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then
// do stuff...
End If
【讨论】:
这里有一个简单的方法来判断一个给定的对象变量“o”是否实现了一个特定的接口“ISomething”:
If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then
' The interface is implemented
End If
【讨论】: