工作簿事件和方法之间的歧义例如同步

问题描述 投票:0回答:1

我得到一个模糊错误,似乎是在事件和属性名称之间。我有一个类正在实现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'

Notes

Visual Studio似乎足够聪明,可以通过在其前面添加“WorkbookEvents_Event。”来避免在命名事件时出现歧义。在Open的情况下,我们没有相同的歧义,Visual Studio没有前缀:

public event WorkbookEvents_OpenEventHandler Open
c# excel visual-studio events ambiguity
1个回答
0
投票

我在网上查看了这个特殊情况:https://bishoponvsto.wordpress.com/category/vsto/vsto-issues/。我从这个问题中找到了参考文献:Excel Workbook Activate Event Ambiguity for C# VSTO

我会在这里解决我的具体问题的解决方案。对于Sync方法:

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

对于Sync事件:

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

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

Activate事件与Sync事件类似。

© www.soinside.com 2019 - 2024. All rights reserved.