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


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

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

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

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

<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>

Дополнительные сведения о добавлении ссылки на сборку и имени экземпляра для класса см. в разделе Как добавить в отчет ссылку на сборку (службы Reporting Services).

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