यह एक बहुत पुराना विषय है, लेकिन इस अंतिम चरण में मेरे विचार में कूद गया है और मुझे कुछ टिप्पणियां पसंद हैं क्योंकि मैं केवल लिखने के गुणों के लिए मामला बनाने की कोशिश करता हूं ...
मेरे पास ऐसी 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
एस का एक सरणी लेती है , जिनमें से प्रत्येक में एक संबद्ध संपत्ति होती है, जो रिपोर्ट डिजाइन के आधार पर, इंस्टेंटेशन पर एक पैरामीटर के रूप में पारित किया जा सकता है या उपयोगकर्ता द्वारा इंस्टेंटेशन से पहले सेट किया जा सकता है रिपोर्ट 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
एस सामान्य की तरह हैं
- रिपोर्ट बनाने पर अधिक लचीलापन, रिपोर्ट तत्काल उपलब्ध हो सकती है यदि सभी पैरामीटर उपलब्ध हैं या बाद में जोड़े जाते हैं जैसे वे उपलब्ध हो जाते हैं।
- गुण तात्कालिकता पर "वाक्य रचना" के साथ समर्थन करते हैं
- क्या "गेट्टर" वास्तव में आवश्यक है क्योंकि पैरामीटर उपयोगकर्ता को ज्ञात हैं और रिपोर्ट द्वारा परिवर्तित नहीं किए गए हैं?
- चूँकि
SqlParameter
s एक वर्ग हैं और आदिम मूल्य नहीं हैं, इसलिए WriteOnly गुण पैरामीटर सेट करने के लिए एक सरल इंटरफ़ेस की अनुमति देते हैं
तो यह मेरे विचार हैं।
क्या मैं इसे एक विधि में बदल सकता हूं? यकीन है लेकिन इंटरफ़ेस लगता है ... कम अच्छा
R2.BudgetID = SomeBudgetID
बनाम
R2.SetBudgetID(SomeBudgetID)