无法解决模棱两可的参考

时间:2015-03-13 23:40:45

标签: c#

显然我有3个具有相同命名空间的dll(但是对象浏览器说它只存在于一个中)。

通常在Resharper中我可以自动解析引用,但在这种情况下它不会这样做。有问题的类型是ItemEvents_10_Event,当我在这里搜索该类型时会出现什么:

enter image description here

我尝试使用Microsoft.Interop.Outlook为界面添加前缀,但它仍会抱怨相同的消息。

以下是有用的用法:

((ItemEvents_10_Event)MailItem).Send += OnSend;
((ItemEvents_10_Event)MailItem).BeforeAttachmentAdd += BeforeAttachmentAdd;
((ItemEvents_10_Event)MailItem).Write += OnInspectorSaved;

请注意,我没有得到任何编译或运行时错误(在运行时我的方法永远不会被调用),但是这个类下面有一条波浪形的红线,这提醒我有一个问题。

1 个答案:

答案 0 :(得分:2)

这可能是需要extern alias的情况。发生错误是因为您有3个程序集(.dll s),它们在同一名称空间中都包含相同的类。

在VS中,选择您要使用的引用(可以是3中的任何一个),并为其添加别名:http://i.imgur.com/dLXahuC.png

然后,您可以在文件中将其用作:

extern alias MyAlias;
using ItemEvents_10_Event = MyAlias::Microsoft.Office.Interop.Outlook.ItemEvents_10_Event;

这将使用带有别名的.dll中的ItemEvents_10_Event