वीबी 6 कक्षा मॉड्यूल में पैरामीटरयुक्त कन्स्ट्रक्टर नहीं हैं। इसके लिए आपने किस समाधान को चुना है? Facory विधियों का उपयोग स्पष्ट पसंद की तरह लगता है, लेकिन मुझे आश्चर्य है!आपने वीबी 6 में रचनाकारों की कमी के साथ कैसे निपटाया है?
उत्तर
मैं आमतौर पर कारखाने के तरीकों, जहां मैं एक ही मॉड्यूल (.BAS विस्तार) में संबंधित वर्गों के लिए "कंस्ट्रक्टर्स" डाल करने के लिए चिपके रहते हैं। अफसोस की बात है, यह इष्टतम से बहुत दूर है क्योंकि आप वास्तव में वीबी 6 में सामान्य ऑब्जेक्ट सृजन तक पहुंच सीमित नहीं कर सकते हैं - आपको केवल कारखाने के माध्यम से अपनी वस्तुओं को बनाने का एक बिंदु बनाना है। वास्तविक वस्तु और आपकी फैक्ट्री विधि के बीच कूदना क्या बुरा है, क्योंकि आईडीई में संगठन स्वयं बोझिल है।
या कक्षा में फ़ैक्टरी विधि जोड़ने के बारे में क्या? मॉड्यूल में फैक्ट्री विधियों को रखना उन्हें एप्लिकेशन विशिष्ट बनाता है। – Dabblernl
@Dabblernl - लेकिन फिर आपको उन्हें जावा के 'सार्वजनिक स्थिर' के बराबर बनाना होगा, है ना? वीबी 6 में स्थिर तरीके नहीं हैं। – derekerdmann
ठीक है, एक स्थिर वर्ग की कोई ज़रूरत नहीं है। आपको फैक्ट्री विधि तक पहुंचने के लिए एक उदाहरण बनाना होगा, लेकिन जैसा कि आप ऑब्जेक्ट की निर्भरताओं का उपयोग नहीं करते हैं जो स्वीकार्य होगा IMHO – Dabblernl
उपलब्ध क्लास प्रारंभकर्ता का उपयोग करने के बारे में कैसे? यह एक parameterless निर्माता की तरह बर्ताव:
Private Sub Class_Initialize()
' do initialization here
End Sub
तथ्य यह है कि यह किसी भी पैरामीटर को स्वीकार नहीं करता है यह एक निर्माता के रूप में काफी बेकार बनाता है। यह वास्तव में केवल कुछ चीजों को स्थापित करने देता है, लेकिन वास्तव में वस्तु के राज्य को प्रारंभ नहीं करता है। – derekerdmann
क्षमा करें, मेरा सवाल अस्पष्ट था। मेरा मतलब था कि इस समस्या को हल करने के लिए कि केवल एक पैरामीटर रहित कन्स्ट्रक्टर है: Class_Initialize – Dabblernl
मैं कारखाने के कार्यों (पैरेंट कक्षाओं में) का मिश्रण उपयोग करता हूं जो तब ऑब्जेक्ट का एक उदाहरण बनाते हैं और एक मित्र को Init()
विधि कहते हैं।
कक्षा CObjects
:
Public Function Add(ByVal Param1 As String, ByVal Param2 As Long) As CObject
Dim Obj As CObject
Set Obj = New CObject
Obj.Init Param1, Param2
Set Add = Obj
End Function
कक्षा CObject
:
Friend Sub Init(ByVal Param1 As String, ByVal Param2 As Long)
If Param1 = "" Then Err.Raise 123, , "Param1 not set"
If Param2 < 0 Or Param2 > 15 Then Err.Raise 124, , "Param2 out of range"
'Init object state here
End Sub
मैं जानता हूँ कि Friend
गुंजाइश परियोजना में इसका कोई प्रभाव नहीं होगा, लेकिन यह एक चेतावनी है कि यह आंतरिक के लिए है के रूप में कार्य सिर्फ इस्तमाल करे। यदि इन ऑब्जेक्ट्स को COM के माध्यम से उजागर किया जाता है तो Init
विधि को कॉल नहीं किया जा सकता है, और कक्षा को PublicNotCreatable
stops it being created पर सेट किया जा सकता है।
- 1. वीबी .NET में ब्लॉक टिप्पणियों की कमी?
- 2. वीबी 6
- 3. वीबी 6
- 4. सी # वीबी 6 DoEvents
- 5. वीबी 6
- 6. वीबी 6
- 7. वीबी 6 में रेगेक्स?
- 8. वीबी 6
- 9. वीबी 6
- 10. वीबी 6
- 11. वीबी 6
- 12. वीबी 6
- 13. वीबी 6
- 14. वीबी 6
- 15. वीबी 6
- 16. वीबी 6
- 17. वीबी 6
- 18. वीबी 6
- 19. वीबी 6
- 20. वीबी 6
- 21. वीबी 6
- 22. वीबी 6
- 23. वीबीए/वीबी 6
- 24. विरासत वीबी 6 कोड
- 25. वीबी 6 ऑब्जेक्ट तुलना
- 26. मैं वीबी 6 प्रोग्राम
- 27. वीबी 6 आईडीई
- 28. एक वीबी 6 एक्सई
- 29. वीबी 6 EXE
- 30. वीबी 6 एप्लिकेशन
रचनाकारों की कमी आईएमओ कहने का एक अच्छा तरीका नहीं है। वीबी 6 * करता है * वास्तव में पैरामीटर रहित रचनाकार ('class_Initialize' विधि) है। इसके पास पैरामीटरयुक्त कन्स्ट्रक्टर नहीं है। –
@ मेहरदाद: बिंदु ले लिया! – Dabblernl