これは非常に古いトピックですが、この後半の段階で私の見解に飛び込んできたトピックであり、書き込み専用プロパティのケースを作成しようとするときにコメントをお願いします...
ActiveReport
Webサイトの一部である一連のクラスがあり、インスタンス化され、ユーザーがいくつか選択した後にポストバックで実行されます。
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プロパティが関連付けられていますreports 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
、sはクラスではなく、プリミティブ値であり、書き込み専用のプロパティは、パラメータを設定するためのシンプルなインタフェースを可能に
それが私の考えです。
代わりにメソッドに変換できますか?確かに、インターフェースは...あまり良くないようです
R2.BudgetID = SomeBudgetID
対
R2.SetBudgetID(SomeBudgetID)