이것은 매우 오래된 주제이지만이 후기 단계에서 내 견해로 뛰어 들었으며 쓰기 전용 속성에 대한 사례를 만들려고 할 때 의견을 남기고 싶습니다 ...
ActiveReport
여러 사용자 선택 후 인스턴스화되고 포스트 백에서 실행되는 웹 사이트의 일부인 클래스 세트가 있습니다.
VB 코드는 다음과 같습니다.
Public Class SomeReport
Private greader As New GenericReporting.CommonReader("AStoredProcedure",
{New SqlParameter("budget_id", 0)})
Public WriteOnly Property BudgetID As Integer
Set(value As Integer)
greader.Parameters("budget_id").Value = value
End Set
End Property
Public Sub New(Optional budget_id As Integer = 0)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
BudgetID = budget_id
End Sub
End Class
이 보고서는 일반 내장을 사용 CommonReader
하고 저장 프로 시저 및 기본 배열을 사용하며 SqlParameter
, 각각은 보고서 디자인에 따라 인스턴스화시 매개 변수로 전달되거나 인스턴스화 후 사용자가 설정할 수있는 관련 WriteOnly 속성이 있습니다. 보고서 Run
메소드를 호출합니다 .
'''''''''''''''''''''''
' Parameter taken from a user selected row of a GridView
'
Dim SomeBudgetID As Integer = gvBudgets.SelectedDataKey.Values(budget_id)
'''''''''''''''''''''''
' On Instantiation
'
Dim R as ActiveReport = New SomeReport(SomeBudgetID)
R.Run()
'''''''''''''''''''''''
' Or On Instantiation using "With" syntax
'
Dim R as ActiveReport = New SomeReport() With {.BudgetID = SomeBudgetID}
R.Run()
'''''''''''''''''''''''
' Or After
'
Dim R as ActiveReport = New SomeReport()
R.BudgetID = SomeBudgetID
R.Run()
보시다시피,이 경우 쓰기 전용 속성이
SqlParameter
s는 일반적인 종류이므로 더 강력한 유형 검사가 가능합니다.
- 보고서 작성에 대한 유연성이 향상되어 모든 매개 변수가 사용 가능해 지거나 나중에 추가되면 보고서를 즉시 인스턴스화 할 수 있습니다.
- 속성은 인스턴스화시 "With"구문을 지원합니다
- 매개 변수가 사용자에게 알려지고 보고서에 의해 변경되지 않으므로 "getter"가 실제로 필요한가?
- 이후
SqlParameter
의이 클래스와 원시하지 값은, 쓰기 전용 속성을 설정 매개 변수에 대한 간단한 인터페이스를 허용
이것이 저의 생각입니다.
대신 메소드로 변환 할 수 있습니까? 확실하지만 인터페이스는 ... 더 좋지 않은 것 같습니다.
R2.BudgetID = SomeBudgetID
대
R2.SetBudgetID(SomeBudgetID)