Я решил эту проблему, обновив mt angular-cli локально в devDependenices (package.json) с 1.2.0 до 1.6.7
Один из способов сделать это - использовать avr-objdump
в файле .elf
, созданном сборкой. Например, в OS X я могу сделать это:
$ cd ~/arduino-0015/examples/Digital/Blink/applet $ avr-objdump -d Blink.elf
(Ваш путь в Windows, очевидно, может быть другим.) Это приводит к дизассемблированию кода, часть которого будет выглядеть примерно так:
0000013a <main>: 13a: 0e 94 3e 01 call 0x27c <init> 13e: 0e 94 97 00 call 0x12e <setup> 142: 0e 94 80 00 call 0x100 <loop> 146: fd cf rjmp .-6 ; 0x142 <main+0x8>
Во-первых, ReadOnlyCollection
действительно реализует IEnumerable
и IList
. Благодаря всем методам расширения в .NET 3.5 и LINQ у вас есть доступ почти ко всем функциям исходного класса List
с точки зрения запросов, это все, что вам нужно сделать с ReadOnlyCollection
в любом случае.
При этом ваш первоначальный вопрос заставляет меня сделать несколько предложений ...
Возвращение List
- плохой дизайн, поэтому его не следует сравнивать. List
должен использоваться для реализации, но для интерфейса должен быть возвращен IList
. В Рекомендациях по проектированию инфраструктуры конкретно говорится:
« НЕ использовать ArrayList
или List
в общедоступных API». (Страница 251)
Если принять это во внимание, у ReadOnlyCollection
нет никаких недостатков по сравнению с List
. Оба эти класса реализуют IEnumerable
Список языков ассемблера можно найти в файлах .o
в созданном каталоге obj
. Например, список самого скетча находится в obj \
Если вы используете Linux, вы можете следовать этому руководству о том, как скомпилировать для Arduino без IDE .
Как только вы это сделаете, вы можете получить листинг сборки, запустив gcc с флагом -s.