this.tooltip = this.renderer.createElement('div');
this.tooltipTitle.split(',').forEach((text) => {
this.renderer.appendChild(this.tooltip, this.renderer.createText(text));
this.renderer.appendChild(this.tooltip, this.renderer.createElement('br'));
var img2 = document.createElement('img'); // Use DOM HTMLImageElement
img2.src = 'image2.jpg';
img2.alt = 'alt text';
this.renderer.appendChild(this.tooltip,img2);
this.renderer.appendChild(this.tooltip, this.renderer.createElement('br'));
this.renderer.appendChild(document.body, this.tooltip);
});
Внутреннее расположение управляемой структуры является недокументированным и неподдающимся обнаружению. Детали реализации как членский порядок и упаковка намеренно скрыты. С [StructLayout] атрибут, Вы вынуждаете P/Invoke marshaller наложить определенное расположение и упаковку.
То, что значение по умолчанию просто, оказывается, соответствует тому, что необходимо получить код для работы является просто несчастным случаем. Хотя не редкий. Отметьте Тип. Свойство StructLayoutAttribute.
Я не совсем уверен, но это может влиять на двоичную сериализацию - это могло бы выложить поля в порядке с не именованием или информацией для заказа (приводящий к меньшему файлу), но это - полная прихоть.
Интересный момент. Я уверен, что у меня был код, который не удался, пока я не вставил явный LayoutKind.Sequential, однако я подтвердил, что Sequential используется по умолчанию для структур даже в 1.1.
Обратите внимание, что в Справочнике VB для структуры в разделе «Примечания> Поведение> Потребление памяти» подразумевается, что вам действительно нужно указать StructLayout для подтверждения структуры памяти, но документация для StructLayoutAttribute состояния "Последовательный" используется по умолчанию для структур в компиляторах Microsoft.