मेरे पास कक्षाओं का संग्रह है जो मैंने बनाए गए एक अमूर्त वर्ग से प्राप्त किया है। मैं अपने अमूर्त वर्ग के ठोस कार्यान्वयन के उदाहरण बनाने के लिए अमूर्त वर्ग का कारखाना के रूप में उपयोग करना चाहता हूं।क्या कोई कन्स्ट्रक्टर केवल सी # में अभिभावक वर्ग के लिए दृश्यमान बनाने का कोई तरीका है?
क्या माता-पिता वर्ग को छोड़कर सभी कोड से कन्स्ट्रक्टर को छिपाने का कोई तरीका है।
मैं इस मूल रूप से
public abstract class AbstractClass
{
public static AbstractClass MakeAbstractClass(string args)
{
if (args == "a")
return new ConcreteClassA();
if (args == "b")
return new ConcreteClassB();
}
}
public class ConcreteClassA : AbstractClass
{
}
public class ConcreteClassB : AbstractClass
{
}
करना चाहते हैं लेकिन मैं सीधे 2 ठोस वर्ग instantiating से किसी को रोकने के लिए चाहते हैं। मैं यह सुनिश्चित करना चाहता हूं कि केवल MakeAbstractClass() विधि बेस क्लास को तुरंत चालू कर सके। क्या इसे करने का कोई तरीका है?
अद्यतन
मैं सार वर्ग के बाहर से ConcreteClassA के किसी भी विशिष्ट विधियों या बी का उपयोग करने की जरूरत नहीं है। मुझे केवल अपनी सार कक्षाओं के सार्वजनिक तरीकों की आवश्यकता है। मुझे कंक्रीट कक्षाओं को तत्काल होने से रोकने की ज़रूरत नहीं है, मैं केवल इससे बचने की कोशिश कर रहा हूं क्योंकि वे कोई नया सार्वजनिक इंटरफेस प्रदान नहीं करते हैं, केवल अमूर्त वर्ग के लिए कुछ विशिष्ट चीजों के अलग-अलग कार्यान्वयन।
मेरे लिए, सबसे आसान समाधान make child classes as samjudson mentioned है। मैं इससे बचना चाहता हूं हालांकि यह मेरी अमूर्त कक्षा 'फ़ाइल को जितना बड़ा होगा उतना बड़ा कर देगा। मैं कक्षाओं को संगठन के लिए कुछ फाइलों पर विभाजित रखना चाहता हूं।
मुझे लगता है कि वहाँ इस के लिए कोई आसान समाधान ...
अच्छा उदाहरण है, लेकिन थोड़ा और नामकरण करना। नेटी और कोडिंग-मानकों के लिए इसे "CreateAbstractClass (स्ट्रिंग args)" कहें :) –