web-dev-qa-db-fra.com

Comment éliminer les avertissements d'ambiguïté?

J'ai cet avertissement:

Avertissement 3 Ambiguïté entre la méthode 'Microsoft.Office.Interop.Word._Application.Quit (objet ref, objet ref, objet ref)' et la méthode autre que Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit. Utilisation du groupe de méthodes.

sur ma ligne

wordApplication.Quit();

J'ai essayé de le remplacer par:

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

et

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

mais il continue à me donner cet avertissement. Ce n'est pas un gros problème car le code est parfaitement compilé et fonctionne comme prévu, mais j'aimerais supprimer les avertissements. Que puis-je faire?

54
user1002358

Convertissez explicitement la référence sur le type _Application:

((_Application)wordApplication).Quit(); 
72
phoog

J'ai utilisé ça

   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();
0
user3397383

Cela signifie qu'il y a deux méthodes quit dans l'espace de noms inclus que vous pouvez, si vous préférez, changer quit en Microsoft.Office.Interop.Word._Application.Quit pour supprimer le message ou (ne pas l'avoir personnellement essayé) utiliser une instruction using.

0
smitec

Je crois que vous devez définir le type des paramètres à quitter. J'utilise ce qui suit, qui semble fonctionner.

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;
0
Kim Crosser