Я создаю небольшой помощник для извлечения и заполнения всех элементов управления группы лент внутри коллекции.
Option Strict On
Imports Microsoft.Office.Tools.Ribbon
Private Function GetChildControls(Group As RibbonGroup) As IEnumerable(Of RibbonControl)
Dim ChildControls As New List(Of RibbonControl)
Dim SubControls As IEnumerable(Of RibbonControl) = Group.Items
ChildControls.AddRange(SubControls)
' ...
' Some recursive call over SubControls to get the children of each child (not relevant here)
' ...
Return ChildControls
End Function
Разрывы кода на ChildControls.AddRange(SubControls)
, со следующим исключением:
System.InvalidCastException: 'Невозможно привести объект типа Microsoft.Office.Tools.Ribbon.RibbonControl []' к типу Microsoft.Office.Tools.Ribbon.RibbonControlImpl [] '.'
Я не могу найти никакой ссылки на RibbonControlImpl
. Документация Microsoft молчит, и, что удивительно, Google или StackOverflow .
Изменение ChildControls.AddRange(SubControls)
в SubControls.ToList.ForEach(Sub(p) ChildControls.Add(p))
не тоже работает, но класс c For Each
делает свое дело:
For Each MySubControl As RibbonControl In SubControls
ChildControls.Add(MySubControl)
Next
Я хотел бы понять, что здесь происходит? Является ли Impl
суффиксом типов интерфейса для обозначения чего-либо? Может быть, «Impl» означает «Реализация»? Я также не смог найти никакой информации по этому вопросу.