我收到一个似乎在事件和属性名称之间的歧义错误。我有一个实现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”之间的歧义
我在激活时遇到类似的错误,但在这种情况下,仅在事件覆盖时:
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
答案 0 :(得分:0)
我通过在线查看https://bishoponvsto.wordpress.com/category/vsto/vsto-issues/解决了这个特殊情况。我从以下问题中检索了参考:Excel Workbook Activate Event Ambiguity for C# 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;
}
}
激活事件类似于同步事件。