У меня есть параметр объекта, и мне нужно проверить, реализует ли объект указанный интерфейс в vb.net. Как проверить это?Проверка, если объект реализует интерфейс
Спасибо.
У меня есть параметр объекта, и мне нужно проверить, реализует ли объект указанный интерфейс в vb.net. Как проверить это?Проверка, если объект реализует интерфейс
Спасибо.
Использование TypeOf...Is:
If TypeOf objectParameter Is ISpecifiedInterface Then
'do stuff
End If
Обратите внимание, что если «do stuff» требует вызова элемента интерфейса на объекте, вы, вероятно, захотите использовать «As» для создания и затем обеспечить объект «IsNot Nothing». (Это предотвращает ненужный второй бросок). – bobbymcr
requiredInterface.IsAssignableFrom (representedType)
как requiredInterface и representedType типы
Я также нашел, что это 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
У меня есть List(Of String)
и TypeOf tmp Is IList
возвращает False
. Перечень (Of T) реализует несколько интерфейсов (IEnumerable, IList, ...) и проверять только один требует следующий фрагмент кода в VB:
If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then
// do stuff...
End If
Вот простой способ определить данную переменную ли объект «о "реализует конкретный интерфейс" ISomething ":
If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then
' The interface is implemented
End If
Это отличный вопрос, который соответствует моему поисковому запросу в Google точно и имеет ответ. – CodingBarfield