2009-09-01 3 views
36

У меня есть параметр объекта, и мне нужно проверить, реализует ли объект указанный интерфейс в vb.net. Как проверить это?Проверка, если объект реализует интерфейс

Спасибо.

+4

Это отличный вопрос, который соответствует моему поисковому запросу в Google точно и имеет ответ. – CodingBarfield

ответ

52

Использование TypeOf...Is:

If TypeOf objectParameter Is ISpecifiedInterface Then 
    'do stuff 
End If 
+1

Обратите внимание, что если «do stuff» требует вызова элемента интерфейса на объекте, вы, вероятно, захотите использовать «As» для создания и затем обеспечить объект «IsNot Nothing». (Это предотвращает ненужный второй бросок). – bobbymcr

3

requiredInterface.IsAssignableFrom (representedType)

как requiredInterface и representedType типы

3

Я также нашел, что это article Скотт Hansleman быть особенно полезно с этим. В ней он рекомендует

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 
0

У меня есть List(Of String) и TypeOf tmp Is IList возвращает False. Перечень (Of T) реализует несколько интерфейсов (IEnumerable, IList, ...) и проверять только один требует следующий фрагмент кода в VB:

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

Вот простой способ определить данную переменную ли объект «о "реализует конкретный интерфейс" ISomething ":

If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then 
    ' The interface is implemented 
End If 
Смежные вопросы