Сделать неуправляемый тип ComVisible (true) при сборке: ComVisible (false) - PullRequest
0 голосов
/ 16 сентября 2018

С учетом следующего кода:

#pragma unmanaged
public struct PluginHeader { };

#pragma managed
using namespace System::Runtime::InteropServices;
[assembly:ComVisible(false)];

[ComVisible(true)]
public interface class
ILHMPluginLoader
{
    bool LoadSensorPlugin (PluginHeader* pluginHeader);
};

tlbexp не сможет сделать ILHMPluginLoader доступным через COM, потому что PluginHeader не является общедоступным. Выдает следующее предупреждение:

TX801311B0 Предупреждение. На тип значения PluginHeader, не являющийся видимым COM, ссылаются либо на экспортируемый в данный момент тип, либо на один из его базовых типов.

Однако, если я сделаю видимым всю сборку assembly:ComVisible(true), все будет работать нормально. Я не могу явно пометить PluginHeader ComVisible (true), поскольку он находится на неуправляемой стороне.

Как я могу сделать PluginHeader COM видимым, не раскрывая всю сборку?

...