다음을 통해 공유


사용자 지정 어셈블리 개체 초기화

경우에 따라 인스턴스화할 때 사용자 지정 어셈블리 클래스에서 속성 및 필드 값을 초기화해야 할 수 있습니다. 보고서의 전역 개체 컬렉션에서 사용할 수 있는 값을 사용하여 사용자 지정 클래스를 초기화해야 할 가능성이 큽니다. 보고서의 Code 개체에 대한 OnInit 메서드를 재정의하여 이 작업을 수행합니다. OnInit에 액세스하려면 보고서 정의의 Code 요소를 사용합니다. 보고서에서 사용하려는 사용자 지정 어셈블리에서 클래스의 속성 또는 필드 값을 초기화하는 두 가지 기술이 있습니다. OnInit을 사용하여 클래스의 새 인스턴스를 선언하고 만들거나 OnInit을 사용하여 공개적으로 사용할 수 있는 메서드를 호출할 수 있습니다.

전역 개체 컬렉션 및 초기화

사용자 지정 클래스 변수를 초기화하기 위해 여러 컬렉션을 사용할 수 있습니다. GlobalsUser 컬렉션을 사용할 수 있습니다. OnInit 메서드가 호출될 때 보고서 수명 주기의 시점에서는 Parameters, FieldsReportItems 컬렉션을 사용할 수 없습니다. 공유 컬렉션인 Globals 또는 User 사용하려면 보고서 개체 참조를 포함해야 합니다. 예를 들어, 보고서에 액세스하는 사용자의 현재 언어를 기반으로 사용자 지정 클래스를 초기화하려면 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)을 참조하세요.