मैं हाल ही में कुछ प्रोग्रामिंग कर रहा है 'और एक मुद्दा है जो मैं सी # में अजीब पाया सामना करना पड़ा। (कम से कम मेरे लिए)छिपे हुए कन्स्ट्रक्टर के साथ नेस्टेड क्लास सी # में असंभव है?
public class Foo
{
//whatever
public class FooSpecificCollection : IList<Bar>
{
//implementation details
}
public FooSpecificCollection GetFoosStuff()
{
//return the collection
}
}
मैं फू के उपभोक्ता FooSpecificCollection के लिए एक संदर्भ प्राप्त, यहां तक कि उस पर कुछ कार्रवाई करने के लिए सक्षम होना चाहता हूँ। हो सकता है कि इसे फू की किसी अन्य संपत्ति पर भी सेट करें या उस तरह की smth, लेकिन इस वर्ग का एक उदाहरण बनाने में सक्षम नहीं है। (एकमात्र वर्ग जो इस संग्रह को स्थापित करने में सक्षम होना चाहिए, वह होना चाहिए।
क्या मेरा अनुरोध वास्तव में दूरगामी है? मुझे पता है कि लोग समझदार तरीके से परिभाषित सी # हैं लेकिन ऐसा कोई विकल्प नहीं होना चाहिए जो माता-पिता वर्ग अब तक एक नेस्टेड वर्ग उदाहरण बना सकते हैं, लेकिन किसी और नहीं कर सकता।
मैं एक अमूर्त वर्ग, या संपत्ति के माध्यम से उपलब्ध इंटरफ़ेस बनाने के लिए और एक ठोस निजी वर्ग कि कहीं और उपलब्ध नहीं है लागू करने के लिए एक समाधान बनाया।
क्या ऐसी स्थिति को संभालने का यह सही तरीका है।
संभव डुप्लिकेट: http://stackoverflow.com/questions/1664793/how-to-restrict-access-to-nested-class-member-to-enclosing-class –
यह बाहरी वर्ग भर्ती कर सकता है उत्सुक: क्या यह मामला 'फू' के कई उदाहरण होंगे, प्रत्येक के अपने अद्वितीय 'FooSpecificCollection के साथ? – BillW
हां, यही मामला है।आइए मान लें कि प्रत्येक क्लाइंट के पास फू इंस्टेंस होगा (यह कुछ सटीक समय पर फैक्ट्री द्वारा बनाया जाएगा) और फू स्वयं के लिए एक FooSpecificCollection बना देगा। मैं foo विशिष्ट संग्रह तक पहुंच प्रदान करता हूं ताकि लोगों को पता चले कि इसमें क्या फू है, और मैंने उन्हें आइटम के साथ खेलने दिया, लेकिन उन्हें एक बनाने में सक्षम नहीं होना चाहिए क्योंकि यह थोड़ा समझ में आता है। रात के दौरान मैंने सोचा कि शायद मैं इस कोड को बहुत अधिक अर्थशास्त्र के साथ बनाने की कोशिश करता हूं :) – luckyluke