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

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

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

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

Dim m_myClass As MyClass  

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

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

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

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

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

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