Я получаю ошибку неоднозначности, которая кажется между событием и именем свойства. У меня есть класс, который реализует интерфейс Microsoft.Office.Interop.Excel.Workbook
и украшает его дополнительной логикой. Интерфейс реализуется через приватную переменную типа Workbook. Я использовал ярлык Visual Studio для реализации интерфейса через этот частный член. Но я получаю некоторые ошибки, связанные с двусмысленностью.
Например, есть свойство Sync типа Microsoft.Office.Core.Sync. Существует также событие под названием Sync. Оба отображаются как ошибки для меня. Вот фрагмент кода:
class WorkbookDecoratorImpl : Workbook
{
private Workbook _workbook;
public Microsoft.Office.Core.Sync Sync => _workbook.Sync;
event WorkbookEvents_SyncEventHandler WorkbookEvents_Event.Sync
{
add
{
_workbook.Sync += value;
}
remove
{
_workbook.Sync -= value;
}
}
Я получаю ошибки как для события, так и для свойства, говоря:
Неоднозначность между «WorkbookEvents_Event.Sync» и «_Workbook.Sync»
Я получаю аналогичную ошибку для Activate, но в этом случае только при переопределении события:
event WorkbookEvents_ActivateEventHandler WorkbookEvents_Event.Activate
{
add
{
_workbook.Activate += value;
}
remove
{
_workbook.Activate -= value;
}
}
В этом случае я получаю:
error CS1656: Cannot assign to 'Activate' because it is a 'method group'
Заметки
Visual Studio, похоже, достаточно умна, чтобы избежать двусмысленности в именовании события, добавив к нему префикс «WorkbookEvents_Event.». В случае с Open у нас нет такой двусмысленности, и Visual Studio не использует префикс:
public event WorkbookEvents_OpenEventHandler Open