How to eliminate warning about ambiguity?

2019-01-14 19:54发布

问题:

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;