Открытый член 'Где' для типа 'PlcBlockUserGroupComposition' не найден

Я пытаюсь найти папку в проекте Siemens TIA Portal с помощью программы Vb.Net с Siemens Openness.

Если я запускаю код:

Dim currFolder 'Define the current folder without a type.
currFolder = emptySoftware.BlockGroup

For Each folderName As String In path.Split({"\"}, StringSplitOptions.RemoveEmptyEntries).ToList()
    currFolder = currFolder.Groups().Where(Function(x) x.Name = folderName).Single()
Next

Я получаю ошибку

Открытый член 'Где' для типа 'PlcBlockUserGroupComposition' не найден

Но тип SW.Blocks.PlcBlockUserGroup действительно реализует интерфейс IEnumerable.

Кроме того, если я запускаю следующий код:

    Dim currFolder 'Define the current folder without a type.
currFolder = emptySoftware.BlockGroup

For Each folderName As String In path.Split({"\"}, StringSplitOptions.RemoveEmptyEntries).ToList()
    Dim tmpFolder = CType(currFolder, SW.Blocks.plcBlockGroup)
    Dim tmp = tmpFolder.Groups
    currFolder = tmpFolder.Groups().Where(Function(x) x.Name = folderName).Single()
Next

Я не получаю ошибки, хотя мой отладчик показывает, что tmp имеет тип SW.Blocks.PlcBlockUserGroupComposition

Почему это? Что заставляет второй фрагмент работать, а первый - нет?

Причина, по которой я предпочитаю первый фрагмент, заключается в том, что это позволило бы мне использовать один и тот же код для разных типов, которые все реализуют Groups атрибут, а Where функция.

0 ответов

Другие вопросы по тегам