Неоднозначность между событием и методом рабочей книги, например. Синхронизировать

Я получаю ошибку неоднозначности, которая кажется между событием и именем свойства. У меня есть класс, который реализует интерфейс 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

person Colm Bhandal    schedule 03.04.2019    source источник
comment
О, возможно, я нашел ответ: stackoverflow.com/questions/9610285/   -  person Colm Bhandal    schedule 03.04.2019


Ответы (1)


Я решил этот конкретный случай, посмотрев в Интернете здесь: https://bishoponvsto.wordpress.com/category/vsto/vsto-issues/. Я получил ссылку из этого вопроса: Excel Workbook Activate Event Ambiguity for С# VSTO.

Я опишу здесь решение моей конкретной проблемы. Для метода синхронизации:

public Microsoft.Office.Core.Sync Sync => ((_Workbook) _workbook).Sync;

Для события синхронизации:

event WorkbookEvents_SyncEventHandler WorkbookEvents_Event.Sync
    {
        add
        {
            ((WorkbookEvents_Event) _workbook).Sync += value;
        }

        remove
        {
            ((WorkbookEvents_Event) _workbook).Sync -= value;
        }
    }

Событие активации было похоже на событие синхронизации.

person Colm Bhandal    schedule 03.04.2019