Freigeben über


Initialisieren von Objekten benutzerdefinierter Assemblys

In einigen Fällen müssen Sie die Werte der Eigenschaften und Felder in Ihren benutzerdefinierten Assemblyklassen beim Instanziieren initialisieren. Wahrscheinlich müssen Sie die benutzerdefinierten Klassen mit den Werten initialisieren, die Ihnen von den globalen Objektauflistungen des Berichts zur Verfügung stehen. Hierzu überschreiben Sie die OnInit-Methode des Code-Objekts eines Berichts. Um auf OnInit zuzugreifen, verwenden Sie das Code-Element der Berichtsdefinition. Es gibt zwei Techniken, um Eigenschaften- oder Feldwerte der Klassen in einer benutzerdefinierten Assembly zu initialisieren, die Sie in Ihrem Bericht verwenden möchten: Entweder deklarieren und erstellen Sie mit OnInit eine neue Instanz Ihrer Klasse, oder Sie rufen mit OnInit eine öffentlich verfügbare Methode auf.

Globale Objektauflistungen und Initialisierung

Zum Initialisieren der benutzerdefinierten Klassenvariablen stehen Ihnen mehrere Auflistungen zur Verfügung. Sie können die Globals-Auflistung und die User-Auflistung verwenden. Die Auflistungen Parameters, Fields und ReportItems stehen Ihnen zum Zeitpunkt des Berichtslebensdauerzyklus nicht zur Verfügung, wenn die OnInit-Methode aufgerufen wird. Um die freigegebenen Auflistungen, Globals oder User zu verwenden, müssen Sie den Report-Objektverweis einschließen. Wenn Sie beispielsweise Ihre benutzerdefinierte Klasse ausgehend von der aktuellen Sprache des Benutzers initialisieren möchten, der auf den Bericht zugreift, könnte Ihr Code-Element folgendermaßen aussehen:

<Code>
   Dim m_myClass As MyClass

   Protected Overrides Sub OnInit()
      m_myClass = new MyClass(Report.User!Language, _
         Report.Globals!ExecutionTime)
   End Sub
</Code>

Eine Möglichkeit, die Eigenschaften- und Feldwerte einer Klasse zu initialisieren (wie bereits zuvor gezeigt), besteht darin, die neue Klasse zu deklarieren und eine neue Instanz davon zu erstellen, indem Sie einen überschriebenen Konstruktor aufrufen.

Eine andere Möglichkeit zur Initialisierung von Eigenschaften- und Feldwerten in den Klassen Ihrer benutzerdefinierten Assemblys besteht im Aufrufen einer öffentlich verfügbaren Methode, die Sie von der OnInit-Methode aus definieren. Sie müssen zuerst in der Berichtsdefinitionsdatei einen Instanznamen für die Klasse hinzufügen. Sobald Sie den entsprechenden Assemblyverweis und den Instanznamen hinzugefügt haben, können Sie die Initialisierungsmethode aufrufen, um die Eigenschaften- und Feldwerte für Ihre Klasse zu initialisieren. Ihre OnInit-Methode könnte folgendermaßen aussehen:

<Code>
   Protected Overrides Sub OnInit()
      m_myClass.MyInitializationMethod(Report.User!Language, _
         Report.Globals!ExecutionTime)
   End Sub
</Code>

Weitere Informationen über das Hinzufügen eines Assemblyverweises und eines Instanznamens für die benutzerdefinierte Klasse finden Sie unter Vorgehensweise: Hinzufügen eines Assemblyverweises zu einem Bericht (Reporting Services).

Weitere Informationen zu globalen Objektauflistungen finden Sie unter Verwenden integrierter Auflistungen in Ausdrücken (Reporting Services).