Метод ConnectedShapes выдает это исключение для одномерных фигур (т.е. соединителей). Так что вам просто нужно включить эту проверку, либо перед вызовом вашего вспомогательного метода, либо внутри него согласно следующему:
using Visio = Microsoft.Office.Interop.Visio
private static void GetConnected(
Visio.Shape shp,
Visio.VisConnectedShapesFlags whichConnectedShapes,
string category,
Visio.Selection selection,
bool addToSelection)
{
if (shp is null)
{
throw new ArgumentNullException();
}
if (shp.OneD == 0)
{
Array aryTargetIDs = shp.ConnectedShapes(whichConnectedShapes, category);
Console.WriteLine($"{shp.Master.Name} ({shp.NameID}) - {String.Join(", ", aryTargetIDs.Cast<object>().ToArray())}");
}
}
Итак, учитывая набор форм, подобных этой:
![enter image description here](https://i.stack.imgur.com/7Gswg.png)
Вывод консоли из приведенного выше кода будет выглядеть примерно так:
Start/End (Sheet.1) - 2
Decision (Sheet.2) - 4, 6
Subprocess (Sheet.4) -
Document (Sheet.6) -