代码之家  ›  专栏  ›  技术社区  ›  Marco Bettiolo

测试对象是否实现接口

  •  41
  • Marco Bettiolo  · 技术社区  · 15 年前

    我有一个对象参数,我需要检查对象是否实现了vb.net中的指定接口。如何测试这个?

    谢谢。

    5 回复  |  直到 10 年前
        1
  •  57
  •   AJ.    15 年前

    使用 TypeOf...Is :

    If TypeOf objectParameter Is ISpecifiedInterface Then
        'do stuff
    End If 
    
        2
  •  5
  •   Nick DeVore    11 年前

    我也发现了这个 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
    
        3
  •  3
  •   Joe Caffeine    15 年前

    要求的Interface.IsassignableFrom(representedType)

    RequiredInterface和RepresentedType都是类型

        4
  •  2
  •   Harold Short    10 年前

    下面是一种确定给定对象变量“o”是否实现特定接口“isometing”的简单方法:

    If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then
        ' The interface is implemented
    End If
    
        5
  •  0
  •   Elmer    11 年前

    我有一个 List(Of String) 以及 TypeOf tmp Is IList 收益率 False . 一个列表(共T个)实现多个接口(IEnumerable、IList,…),在VB中只检查一个接口需要以下代码段:

    If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then
      // do stuff...
    End If