c# - Word 互操作代码中的歧义

标签 c# ms-word vsto compiler-warnings

<分区>

我最近发布了一个关于阅读 Word 文件的问题 here .

应用程序运行正常,但我收到此警告消息;

Warning Ambiguity between method 'Microsoft.Office.Interop.Word._Document.Close(ref object, ref object, ref object)' and non-method 'Microsoft.Office.Interop.Word.DocumentEvents2_Event.Close'. Using method group.

某些 using 命名空间似乎存在一些歧义,我想知道如何解决这个问题。虽然该应用程序运行,但我想尽量减少警告/错误。

我已经为类(class)提供了以下代码;它所指的行就是这两行

docs.Close(ref nullobject, ref nullobject, ref nullobject);
wordObject.Quit(ref nullobject, ref nullobject, ref nullobject);

完整代码:

namespace Wizard.Classes
{
    class MSWordReader
    {
        public void read(String filename)
        {
            String buffer = "";
            try
            {
                Microsoft.Office.Interop.Word.Application wordObject = new   
                Microsoft.Office.Interop.Word.Application();
                object file = filename; //this is the path
                object nullobject = Type.Missing;
                object visible = false;
                object readonlyp = true;
                object addtorecent = false; //add to words recent filelist

                Microsoft.Office.Interop.Word.Document docs = wordObject.Documents.Open
                    (ref file,ref nullobject, ref readonlyp, ref addtorecent,
                    ref nullobject, ref nullobject, ref nullobject, ref nullobject,
                    ref nullobject, ref nullobject, ref nullobject, ref visible,
                    ref nullobject, ref nullobject, ref nullobject, ref nullobject
                                    );
                docs.ActiveWindow.Selection.WholeStory();
                docs.ActiveWindow.Selection.Copy();
                IDataObject data = Clipboard.GetDataObject();
                buffer = data.GetData(DataFormats.Text).ToString();

                docs.Close(ref nullobject, ref nullobject, ref nullobject);

                wordObject.Quit(ref nullobject, ref nullobject, ref nullobject);
                MessageBox.Show(buffer);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

最佳答案

要解决歧义,请使用:

((Microsoft.Office.Interop.Word._Document)docs).Close(ref nullobject, ref nullobject, ref nullobject);    
((Microsoft.Office.Interop.Word._Application)wordObject).Quit(ref nullobject, ref nullobject, ref nullobject);

关于c# - Word 互操作代码中的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946073/

相关文章:

c# - SqlDataReader 这两个是一样的哪个更快

c# - Linq 比较 XML 值

php - 通过 Php 提供 .docx 文件

vba - 以编程方式更改“不要在相同样式的段落之间添加空格”

installation - 通过 Advanced Installer 部署 VSTO 插件

c# - 构建 RSA 加密服务提供者是持久化还是泄露 key 数据?

c# - 最小起订量配置部分

vba - 在 Microsoft Word 2011 for OSX 中通过 POST 发送和接收数据

c# - 扩展 Outlook 2010 附件上下文菜单

plugins - 卸载 VSTO 插件