Неопределенность между событием и методом книги Синхронизация - PullRequest
0 голосов
/ 03 апреля 2019

Я получаю ошибку неоднозначности, которая, кажется, находится между событием и именем свойства.У меня есть класс, который реализует интерфейс Microsoft.Office.Interop.Excel.Workbook и украшает его дополнительной логикой.Интерфейс реализуется через приватную переменную типа Workbook.Я использовал ярлык Visual Studio для реализации интерфейса через этот закрытый член.Но я получаю некоторые ошибки, связанные с неоднозначностью.

Например, есть свойство Sync, которое имеет тип Microsoft.Office.Core.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

1 Ответ

0 голосов
/ 03 апреля 2019

Я решил этот конкретный случай, посмотрев онлайн здесь: https://bishoponvsto.wordpress.com/category/vsto/vsto-issues/. Я получил ссылку на этот вопрос: Книга Excel. Активируйте двусмысленность событий для C # VSTO .

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

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;
        }
    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...