Я нашел надежный способ предоставить Intellisense для объектов .NET в VB6, не нарушая при этом интерфейс. Ключ должен пометить каждый открытый метод / свойство в интерфейсе DispatchID. Затем класс должен наследовать от этого интерфейса - как описано ниже.
[Guid("BE5E0B60-F855-478E-9BE2-AA9FD945F177")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ICriteria
{
[DispId(1)]
int ID { get; set; }
[DispId(2)]
string RateCardName { get; set; }
[DispId(3)]
string ElectionType { get; set; }
}
[Guid("3023F3F0-204C-411F-86CB-E6730B5F186B")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyNameSpace.Criteria")]
public class Criteria : ICriteria
{
public int ID { get; set; }
public string RateCardName { get; set; }
public string ElectionType { get; set; }
}
То, что дает вам идентификатор отправки, - это возможность перемещаться по предметам в классе, плюс теперь вы можете добавлять новые вещи в класс и не нарушать двоичную совместимость.