इन कॉल के बीच क्या अंतर है?असेंबली के बीच अंतर। क्रिएट इंस्टेंस और एक्टिवेटर। क्रिएट इंस्टेंस?
उत्तर
कोई नहीं। असेंबली। क्रिएट इंस्टेंस वास्तव में एक्टिवेटर को कॉल करता है। हुड के तहत क्रिएट इंस्टेंस। Assembly.CreateInstance पर
का प्रयोग परावर्तक:
public object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes)
{
Type type = this.GetType(typeName, false, ignoreCase);
if (type == null)
{
return null;
}
return Activator.CreateInstance(type, bindingAttr, binder, args, culture, activationAttributes);
}
Assembly.CreateInstance
, एक विशेष सभा में एक प्रकार के लिए देखता है, जबकि Activator.CreateInstance
किसी भी प्रकार की एक वस्तु बना सकते हैं।
Activator.CreateInstance
ओवरलोड करता है कि Assembly
नहीं है; उदाहरण के लिए, यह अन्य ऐप डोमेन, या रीमोटिंग का उपयोग कर किसी अन्य सर्वर पर ऑब्जेक्ट्स बना सकता है।
आप प्रकार के नाम और टाइप ऑब्जेक्ट के बजाय असेंबली का नाम Activator.CreateInstance प्रदान कर सकते हैं। इसका अर्थ है कि यह असेंबली को वर्तमान ऐपडोमेन (यदि वर्तमान में लोड नहीं किया गया है) में लोड करने का प्रयास करेगा और फिर प्रकार को लोड करने का प्रयास करेगा। मैं असेंबली पर विश्वास करता हूं। क्रिएट इंस्टेंस (जो कॉल एक्टिवेटर करता है) असेंबली लोड करने का प्रयास नहीं करता है अगर यह लोड नहीं होता है। यह केवल निर्दिष्ट प्रकार के लिए टाइप ऑब्जेक्ट प्राप्त करने का प्रयास करता है और यदि यह नहीं मिलता है तो शून्य वापस आता है (मैं इसे कोड पढ़कर और परीक्षण के बाद नहीं कहता)।
वे अच्छे अंक – scottm
अच्छा हैं। धन्यवाद दोस्तों। –