Поделиться через


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

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

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

Имеется несколько доступных коллекций для инициализации переменных пользовательского класса. Можно использовать коллекции Globals и User. Коллекции 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).

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