Инициализация настраиваемых объектов сборки

В некоторых случаях может потребоваться инициализировать значения свойств и полей в пользовательских классах сборок при их создании. Скорее всего, вам потребуется инициализировать пользовательские классы со значениями, доступными для вас из глобальных коллекций объектов отчета. Для этого необходимо переопределить метод OnInit объекта Code отчета. Чтобы получить доступ к OnInit, используйте элемент Code определения отчета. Существует два метода инициализации значений свойств или полей классов в пользовательской сборке, которую планируется использовать в отчете: можно объявить и создать новый экземпляр класса с помощью OnInit или вызвать общедоступный метод с помощью OnInit.

Глобальные коллекции объектов и инициализация

Несколько коллекций доступны для инициализации переменных пользовательского класса. Вы можете использовать коллекции Globals и User . Коллекции Parameters, Fields и ReportItems недоступны для вас в момент жизненного цикла отчета при вызове метода OnInit . Чтобы использовать общие коллекции, Globals или User, необходимо включить ссылку на объект Report . Например, чтобы инициализировать пользовательский класс на основе текущего языка пользователя, обращаюющегося к отчету, элемент Code может выглядеть следующим образом:

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

Один из способов инициализации значений свойств и полей класса, как показано ранее, заключается в объявлении класса и создании нового экземпляра, вызвав переопределенный конструктор.

Другим способом инициализации значений свойств и полей классов в пользовательских сборках является вызов общедоступного метода, определяемого из метода OnInit . Сначала необходимо добавить имя экземпляра для класса в файл определения отчета. Добавив соответствующую ссылку на сборку и имя экземпляра, можно вызвать метод инициализации для инициализации свойств и значений полей для класса. Метод OnInit может выглядеть следующим образом:

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

Дополнительные сведения о добавлении ссылки на сборку и имени экземпляра для пользовательского класса см. в статье "Добавление ссылки на сборку" в отчет (SSRS).

Дополнительные сведения о глобальных коллекциях объектов см. в встроенных коллекциях в выражениях (построитель отчетов и службы SSRS).

См. также

Использование пользовательских сборок с отчетами