Warum gibt mir Using () einen Fehler?

8

Ich versuche, eine (Hunderte tatsächlich) Excel-Datei (en) zu öffnen. Ich öffne die Anwendung, möchte aber die Using () -Funktionalität für jede geöffnete Arbeitsmappe verwenden. Warum führt dies zu einem Fehler?

%Vor%

using erhält die rote Unterstreichung und sagt "'Microsoft.Office.Interop.excel.Workbook': Der in einer using-Anweisung verwendete Typ muss implizit in 'System.IDisposable' konvertiert werden können.

Wie funktioniert das?

    
Brad 25.08.2011, 13:53
quelle

5 Antworten

29

So ziemlich, was es sagt - Sie können using nur mit Klassen verwenden, die IDisposable implementieren, so dass der Compiler im Hintergrund weiß, welche Funktion bei der Finalisierung aufgerufen wird - yourclass.Dispose() . Die Excel-Interop-Klassen implementieren das nicht.

Sie haben also zwei Möglichkeiten:

  1. Schreiben Sie Ihre eigene Wrapper-Klasse für Excel.Workbook, die IDispose implementiert und entweder das Objekt selbst für Aufrufmethoden verfügbar macht oder diese Methoden ebenfalls umschließt, z. B.

    %Vor%
  2. Implementieren Sie using selbst, z. B.

    %Vor%
Rup 25.08.2011, 13:57
quelle
2

Jedes Element in einer using -Anweisung muss die IDisposable -Schnittstelle implementieren. Ich habe die Dokumentation nicht zur Hand, aber ich denke, Excel.Workbook implementiert diese Schnittstelle nicht.

    
Adam Houldsworth 25.08.2011 13:55
quelle
1

using-Anweisung (C # -Referenz) :

  

Bietet eine praktische Syntax, die die korrekte Verwendung von gewährleistet   IDisposable Objekte.

Excel.Workbook implementiert IDisposable nicht, daher können Sie using nicht dafür verwenden ..

    
CD.. 25.08.2011 13:55
quelle
1

Sie können es nicht funktionieren lassen.

Der Block using wird verwendet, um Ressourcen von Objekten freizugeben, die die Schnittstelle IDisposable so schnell und so sicher wie möglich implementieren.

Excel.Workbook implementiert IDisposable nicht, sodass Sie es nicht zur Verwendung in einem using -Block deklarieren können.

    
Justin Niessner 25.08.2011 13:56
quelle
-1
%Vor%     
mzonerz 23.06.2014 05:36
quelle

Tags und Links