Freigeben über


Initialisieren von benutzerdefinierten Assemblyobjekten

In einigen Fällen müssen Sie möglicherweise Eigenschafts- und Feldwerte in Ihren benutzerdefinierten Assemblyklassen initialisieren, wenn Sie sie instanziieren. Wahrscheinlich müssen Sie Ihre benutzerdefinierten Klassen mit Werten initialisieren, die Ihnen aus den globalen Objektsammlungen des Berichts zur Verfügung stehen. Hierzu überschreiben Sie die OnInit-Methode des Code-Objekts eines Berichts. Verwenden Sie das Code-Element der Berichtsdefinition, um auf OnInit zuzugreifen. 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 Objektsammlungen 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 Parameters-, Fields - und ReportItems-Auflistungen stehen Ihnen am Punkt im Berichtslebenszyklus nicht zur Verfügung, wenn die OnInit-Methode aufgerufen wird. Sie müssen den Report-Objektverweis einschließen, um die freigegebenen Auflistungen Globals oder User zu verwenden. 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:

Dim m_myClass As MyClass  

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

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. Nachdem Sie den entsprechenden Assemblyverweis und den Entsprechenden Instanznamen hinzugefügt haben, können Sie die Initialisierungsmethode aufrufen, um Eigenschafts- und Feldwerte für Ihre Klasse zu initialisieren. Ihre OnInit-Methode könnte folgendermaßen aussehen:

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

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

Weitere Informationen zur Verwendung der globalen Objektauflistungen finden Sie unter Integrierte Auflistungen in Ausdrücken (Berichts-Generator und SSRS).