नीचे दिए गए फ़ंक्शन को एक ऑब्जेक्ट स्वीकार करता है, जो कभी-कभी किसी दिए गए प्रकार की सरणी हो सकता है। इस मामले में, मुझे लगता है कि प्रकार obj [0] .GetType() के साथ निर्धारित किया जा सकता है, मानते हैं कि सरणी में कम से कम एक सदस्य है। मैं इस तरह के एक सरणी को एक सामान्य सूची < टी > उचित प्रकार के रूप में परिवर्तित करना चाहता हूं, लेकिन नीचे दिया गया कोड केवल सूची < ऑब्जेक्ट > में कनवर्ट करने में सफल होता है। यह कैसे किया जा सकता है?किसी भी प्रकार की सूची को <T> (सी #)
public object GetDeserializedObject(object obj, Type targetType) { if (obj is Array) { List<object> obj2 = new List<object>(); for (int i = 0; i < ((Array)obj).Length; i++) { obj2.Add(((object[])obj)[i]); } obj = obj2; } return obj; }
ध्यान दें कि GetSerializedObject() एक समारोह IDataContractSurrogate इंटरफ़ेस से संबंधित लागू करता है, तो मुझे नहीं लगता कि दिखाया गया के रूप में मैं अपने हस्ताक्षर को बदल सकते हैं है।
"..." के स्थान पर क्या है? –
@nw: जिस वर्ग में आपने 'कनवर्टअरे' विधि को जॉन परिभाषित किया है, वह है। यानी, यदि आप 'कन्वर्टअरे' विधि को 'ऐरेक कनवर्टर' नामक कक्षा में डालते हैं तो 'ArrayConverter' के साथ '...' को प्रतिस्थापित करें। – jason
@ जोन: 'टार्गेट टाइप' 'टाइप' होना चाहिए। – jason