मेरे पास कोड का एक हिस्सा है जहां कभी-कभी मुझे एक नया जेनेरिक प्रकार बनाने की आवश्यकता होती है, लेकिन सामान्य पैरामीटर की अज्ञात संख्या के साथ। उदाहरण के लिए:कई प्रकार के साथ जेनेरिक बनाना
public object MakeGenericAction(Type[] types)
{
return typeof(Action<>).MakeGenericType(paramTypes);
}
समस्या यह है कि यदि मेरे सरणी में एक से अधिक प्रकार हैं, तो प्रोग्राम क्रैश हो जाएगा। अल्प अवधि में मैं इस तरह कुछ स्टॉप-गैप के रूप में आया हूं।
public object MakeGenericAction(Type[] types)
{
if (types.Length == 1)
{
return typeof(Action<>).MakeGenericType(paramTypes);
}
else if (types.Length ==2)
{
return typeof(Action<,>).MakeGenericType(paramTypes);
}
..... And so on....
}
यह काम करता है, और मेरे परिदृश्य को कवर करने में काफी आसान है, लेकिन यह वास्तव में हैकी लगता है। क्या इसे संभालने का कोई बेहतर तरीका है?
सुंदर, सुरुचिपूर्ण समाधान (या कम से कम प्रतिबिंबित जेनेरिक हो सकता है) – KeithS
बहुत अच्छा। यदि आपके सरणी में 16 से अधिक प्रकार थे तो क्या होगा? आपके द्वारा सभी इलेक्ट्रॉनिक उपकरणों को हटाने वाली पुलिस पुलिस के अलावा। – IndigoDelta
@IndigoDelta cogs बाहर गिर जाएगा; पी –