मैं एक फैक्ट्री विधि बनाने की कोशिश कर रहा हूं जो सी # की जेनरिक फीचर का उपयोग करता है।सी # जेनेरिक - टाइप पैरामीटर पर प्रतिबंध
इस कारखाने विधि में मैं इसे कुछ विशिष्ट वर्गों में बाध्य करना चाहता हूं, जिनमें से सभी में डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है।
यहां मेरा उदाहरण है। क्या कोई मुझे बता सकता है कि इसे चलाने के लिए संभव है?
public class AbstractClass {
//this abstract class does not have a default constructor, nor its subclasses
public AbstractClass(SomeClassName obj) {
//use obj for initialization
}
}
//this factory class should create objects of type T that inherit
//from AbstractClass and invoke the non-default constructor
public class FactoryClass {
public static T BuildObject<T> (SomeClassName obj) where T: AbstractClass {
return new T(obj); //does not work?!?!?!
}
}
//Edit: ANSWER!!!
public static T BuildObject<T>(SomeClassUsedForTheConstructor item) where T : SomeAbstractClass {
return (T) Activator.CreateInstance(typeof (T), item);
}
यही वह है जो मैं उपयोग करता था, लेकिन अब मैं ब्रायन द्वारा वर्णित 'Activator.CreateInstance' का उपयोग करता हूं। –