Ответ 1
Вам нужно использовать safe_cast
. Согласно документации MSDN на System::Array
,
Внимание!
Начиная с .NET Framework 2.0, класс Array реализует общие интерфейсы
System.Collections.Generic::IList<T>
,System.Collections.Generic::ICollection<T>
иSystem.Collections.Generic::IEnumerable<T>
. Реализации предоставляются массивам во время выполнения и поэтому не видны инструментам сборки документации. В результате общие интерфейсы не отображаются в синтаксисе объявления для класса Array, и для членов интерфейса нет ссылочных тем, которые доступны только путем литья массива в тип общего интерфейса (явный реализация интерфейса). Ключевое значение, которое нужно учитывать при создании массива на одном из этих интерфейсов, - это элементы, которые добавляют, вставляют или удаляют элементы throwNotSupportedException
.
Как вы можете видеть, актер должен выполняться явно в С++ во время выполнения, например.
List<Process^>^ processList = gcnew List<Process^>(
safe_cast<IEnumerable<T> ^>(
Process::GetProcessesByName(this->processName)));