У меня есть класс VB6, который должен реализовать интерфейс, который я создал в C #. Мне удалось успешно реализовать все свойства интерфейса в моем классе vb6 через COM, но я не смог реализовать событие, которое у него есть. Если я правильно понимаю, мне понадобится эквивалент средств доступа add и remove, определенных для регистрации потребителей события, но я не могу заставить VB6 принять интерфейс с определенным событием. Я устанавливаю InterfaceType класса в InterfaceIsIDispatch, но все равно получаю ошибку «Неверный интерфейс для Implements: у метода есть подчеркивание в имени», когда я пытаюсь скомпилировать. Интерфейс не определяет никаких методов, и ни свойства, ни событие не имеют подчеркивания.
Вот определение интерфейса
namespace AV8B.Overlay
{
[ComVisible(true)]
[Guid("89519DCE-86D6-4962-8CEA-450F2AB31B4E")]
public delegate void OverlaySymbolPropertyChangedEventHandler(object sender, OverlaySymbolPropertyChangedEventArgs e);
[ComVisible(true)]
[Guid("9A59EF10-B688-4af9-8C21-FB95C7ED699A")]
public class OverlaySymbolPropertyChangedEventArgs : PropertyChangedEventArgs
{
OverlaySymbolPropertyChangedEventArgs(string propertyName) : base(propertyName) { }
}
[ComVisible(true)]
[Guid("379B179C-85FA-4efb-8198-D1A4C80D645A")]
public interface IOverlaySymbol : INotifyPropertyChanged
{
bool SelectedForProcessing { get; set; }
int SymbolNumber { get; }
string SymbolType { get; }
double Latitude { get; }
double Longitude { get; }
string Color { get; }
int Size { get; }
/// <summary>
/// This method fires the PropertyChanged event.
/// </summary>
void NotifyPropertyChanged();
/// <summary>
/// The event that fires when a property changes.
/// </summary>
new event OverlaySymbolPropertyChangedEventHandler PropertyChanged;
}
}
Цель этого состоит в том, чтобы поместить существующие объекты VB, которые реализуют этот интерфейс, в список привязок, который будет присоединен к представлению сетки списка. Представление сетки списка должно знать, когда изменяются свойства его элементов, чтобы оно могло соответствующим образом обновляться.