How to eliminate warning about ambiguity?

孤街醉人 提交于 2019-12-17 16:24:14

问题


I have this warning:

Warning 3 Ambiguity between method 'Microsoft.Office.Interop.Word._Application.Quit(ref object, ref object, ref object)' and non-method 'Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit'. Using method group.

on my line

wordApplication.Quit();

I have tried replacing it with:

wordApplication.Quit(false); // don't save changes

and

wordApplication.Quit(false, null, null); // no save, no format

but it keeps giving me this warning. It's not a huge problem because the code compiles perfectly and functions as expected, but I'd like to get rid of the warnings. What can I do?


回答1:


Explicitly cast the reference to the type _Application:

((_Application)wordApplication).Quit(); 



回答2:


It's saying there are two quit methods in the included namespace you can if you like change quit to Microsoft.Office.Interop.Word._Application.Quit to remove the message or (haven't personally tried this) use a using statement.




回答3:


I used this

   object oMissing = System.Reflection.Missing.Value;
   ((Microsoft.Office.Interop.Word._Application)wordApp).Quit(ref oMissing, ref oMissing, ref oMissing);
               wordApp = null;
               GC.Collect();
               GC.WaitForPendingFinalizers();



回答4:


I believe you need to define the type of the parameters to Quit. I use the following, which seems to work.

using Microsoft.Office.Interop.Word;
...
Application wordApplication = new Application();
...
    object paramMissing = Type.Missing;
    object saveOptionsObject = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
        wordApplication.Quit(ref saveOptionsObject, ref paramMissing, ref paramMissing);
        wordApplication = null;


来源:https://stackoverflow.com/questions/8303969/how-to-eliminate-warning-about-ambiguity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!