में जेनेरिक क्लास में नेस्टेड जेनेरिक क्लास का प्रकार प्राप्त करें मेरी प्रोजेक्ट में मैं निम्न श्रेणी का उपयोग करता हूं: Filter<T>.Checker<U>
जिसमें इंटरफ़ेस आईसीएचकर भी है। यह इस तरह दिखता है:सी #
class Filter<T> {
public interface IChecker {
...
}
public class Checker<U> : IChecker {
...
}
List<IChecker> checkers;
...
}
फ़िल्टर वर्ग प्रकार टी की वस्तुओं फिल्टर फिल्टर वर्ग टी जिसमें यू टी में
इस क्षेत्र के प्रकार है में विभिन्न क्षेत्रों की जांच करने के IChecker सूची का उपयोग करताकिसी अन्य वर्ग में किसी अन्य विधि में मैं एक चेकर का उदाहरण बनाना चाहता हूं। उस विधि में टी का प्रकार लेनदेन है, जो संकलन समय पर पता है। यू के प्रकार को केवल टाइप उदाहरण द्वारा जाना जाता है। नीचे दिया गया कोड दिखाता है कि आप सामान्य रूप से टाइप को जानने वाले सामान्य वर्ग का उदाहरण कैसे बनाते हैं।
Type type = typeof(MyObject<>).MakeGenericType(objectType);
object myObject = Activator.CreateInstance(type);
मैं इस एक छोटा सा आगे ले और निम्न कार्य करना चाहते हैं:
Type type = typeof(Filter<Transaction>.Checker<>).MakeGenericType(objectType);
object myObject = Activator.CreateInstance(type);
हिस्सा typeof(Filter<Transaction>.Checker<>)
संकलन नहीं है। कंपाइलर कहता है: Unexpected use of an unbounded generic name
।
क्या यह सी # में जेनेरिक क्लास में नेस्टेड जेनेरिक क्लास का प्रकार संभव है?
पहले से ही उत्तर पोस्ट करने के लिए जोड़ने के लिए - यह [MSDN] (https पर दस्तावेज में विस्तार से बताया गया है: //msdn.microsoft.com/en-us/library/system.type.makegenerictype%28v=vs.110%29.aspx)। पूरे ** नेस्टेड प्रकार ** अनुभाग की जांच करें, विशेष रूप से: * "जेनेरिक प्रकार परिभाषा से जेनेरिक प्रकार परिभाषा से एक सामान्य प्रकार का निर्माण करने के लिए, मेकजेनरिक टाइप विधि को सभी संलग्न प्रकारों के प्रकार तर्क arrays को संयोजित करके बनाई गई सरणी के साथ कॉल करें, बाहरीतम सामान्य प्रकार से शुरू होता है, और नेस्टेड प्रकार के प्रकार तर्क सरणी के साथ समाप्त होता है, यदि उसके पास इसके प्रकार के पैरामीटर हैं। "* – MarcinJuraszek