Я пишу код .NET для COM BITS API. Я нашел файл bits.idl под окнами комплектов и сделал midl bits.idl
, который дал мне bits.tlb. Затем я запустил tlbimp bits.tlb
и получил BackgroundCopyManager.dll.
В этой сборке (на которую ссылается мой проект .net) все, как ожидалось, отображается в обозревателе объектов в VS 2013 и хорошо выглядит в ildasm, за одним исключением. Теперь у меня есть новый тип GUID в пространстве имен BackgroundCopyManager, который, как мне кажется, мне не нужен.
namespace BackgroundCopyManager
{
public struct GUID
{
public uint Data1;
public ushort Data2;
public ushort Data3;
public byte[] Data4;
}
}
Я думал, что System.Guid будет достаточным для всех моих потребностей, связанных с GUID, CLSID и IID на стороне .NET. Можно как-нибудь избавиться от лишнего? Преобразование между System.Guid и этим самозванцем непросто, и, похоже, в этом нет необходимости.
Единственное, что я могу понять, это то, что в этих интерфейсах есть несколько методов, которые используют GUID в качестве типа параметра, и, поскольку этот файл idl относится к 2000 году, я предполагаю, что .NET Interop еще не существовал.