मेरे पास कक्षाओं का एक सेट है, वही काम करने के लिए प्रत्येक एक अलग strategy है।केवल कक्षा का नाम जानने वाले ऑब्जेक्ट बनाएं?
namespace BigCorp.SuperApp
{
public class BaseClass { }
public class ClassA : BaseClass { }
public class ClassB : BaseClass { }
}
उपयोग करने की कौन सी रणनीति का चयन कॉन्फ़िगर करने योग्य है। मैं app.config फ़ाइल में पूर्ण प्रकार के नाम 'BigCorp.SuperApp.ClassB' के बजाय केवल क्लास नाम 'क्लासबी' को कॉन्फ़िगर करना चाहता हूं।
<appConfig>
<SuperAppConfig>
<Handler name="ClassB" />
</SuperAppConfig>
</appConfig>
हालांकि, प्रतिबिंब कॉल विफल क्योंकि वे पूर्ण प्रकार का नाम उम्मीद करते हैं, विशेष रूप से
Type t = Type.GetType("ClassB"); // results in t == null
BaseClass c = Activator.CreateInstance(t) as BaseClass; // fails
मैं इस काम के लिए एक ही वर्ग के नाम कॉन्फ़िगर करते समय कैसे मिल सकता है? पूर्ण नाम के नाम के लिए नामस्थान को नामस्थान से सम्बंधित करें? क्या कोई और प्रतिबिंब कॉल है जो काम करता है?
यदि आपको लगता है कि यह बेकार है और मुझे कॉन्फ़िगरेशन को पूर्ण प्रकार का नाम रखने की उम्मीद करनी चाहिए, तो मैं उस समाधान के लिए खुला हूं! बस मुझे मनाने के लिए तर्क प्रदान करें।
(मैं इस विधानसभा/नाम स्थान के बाहर से एक प्रकार लोड नहीं किया जाएगा)
मैं सिर्फ आईओसी कंटेनर का उपयोग कर सकता हूं, लंबे नामों से निपट सकता हूं, और मेरे लिए ऑब्जेक्ट सृजन प्राप्त कर सकता हूं! –