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

В некоторых случаях может понадобиться инициализировать значения свойств и полей в классах пользовательских сборок при создании их экземпляров. Вероятнее всего, понадобится инициализировать пользовательские классы значениями, доступными из коллекции глобальных объектов отчета. Это выполняется переопределением метода 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).

См. также

Другие ресурсы

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