मैं सी # सीख रहा हूं और जावा दुनिया से आ रहा हूं, मैं थोड़ा उलझन में था कि सी # में "पैकेज निजी" नहीं है। इस राशि के बारे में मैंने जो अधिक टिप्पणियां देखी हैं, "आप इसे नहीं कर सकते; भाषा इस तरह से डिजाइन नहीं की गई थी"। मैंने कुछ वर्कअराउंड भी देखे जिनमें internal
और partial
शामिल थे, जिसमें टिप्पणियां थीं कि ये कामकाज भाषा के डिजाइन के खिलाफ जाते हैं।सी # पैकेज निजी क्यों नहीं है?
सी # इस तरह से डिजाइन क्यों किया गया था? साथ ही, मैं निम्न जैसा कुछ कैसे करूं: मेरे पास Product
वर्ग और ProductInstance
कक्षा है। एकमात्र तरीका है जिसे मैं ProductInstance
बनाया जाना चाहता हूं Product
कक्षा में फैक्ट्री विधि के माध्यम से। जावा में, मैं ProductInstance
को उसी पैकेज में Product
के रूप में रखूंगा, लेकिन इसके कन्स्ट्रक्टर package private
बना सकता हूं ताकि केवल Product
तक इसका उपयोग हो सके। इस तरह, कोई भी जो ProductInstance
बनाना चाहता है, केवल Product
कक्षा में फ़ैक्टरी विधि के माध्यम से ऐसा कर सकता है। मैं सी # में एक ही चीज़ कैसे पूरा करूं?
उत्पाद कक्षाएं निर्माता निजी बनाएं, फिर एक सार्वजनिक स्टेटिक फ़ंक्शन है जो उत्पाद प्रविष्टि देता है, उदाहरण के लिए: var p = product.GetProductInstance –
उत्तर देखकर, मुझे इसका कोई जवाब नहीं दिख रहा है। मुझे लगता है कि यह एक विधि 'आंतरिक' सेटिंग सेट करने वाला एक बड़ा कोड गंध है जहां इसका उपयोग केवल कुछ "अनुकूल" वर्गों द्वारा किया जाना है (सी ++ में 'मित्र' कीवर्ड देखें)। मैं बदबूदार पहुंच को रोकने के लिए सैकड़ों डीएल में अपना आवेदन तोड़ना नहीं चाहता हूं, न ही मैं अपना विस्तार कार्यान्वयन खुला छोड़ना चाहता हूं (मूल रूप से पूरी देव टीम के लिए सार्वजनिक)। क्या मुझे इस सीमा को दूर करने के लिए दस उप-वर्गों के साथ विशाल कक्षाएं लिखनी चाहिए? – PPC