तो उदाहरण के लिए मेरे पास कई प्रकार की कारें हैं जिन्हें एक .car फ़ाइल में क्रमबद्ध किया जा रहा है (यह एक स्कूल प्रोजेक्ट है)। मेरे पास तीन अलग-अलग प्रकार हैं, फोर्ड, लेक्सस और डॉज। मैं उन्हें ठीक से बचा सकता हूं। लेकिन मेरे कार्यक्रम की वर्तमान वास्तुकला के साथ, जब मैं deserialize मैं deserializing से पहले प्रकार जानने की जरूरत है। उदाहरण के लिए मैं इस तरह क्रमबद्ध कर रहा हूँ:

if (CurrentCar.GetType() == typeof(Ford))
{
   var JSON_CAR = JsonSerializer.Serialize((Ford)CurrentCar);
   writer.Write(JSON_CAR);
}

जब मैं deserialize, मैं deserializing से पहले, प्रकार जानने की जरूरत है:

CurrentCar = JsonSerializer.Deserialize<???>(reader.ReadString());

इसे कैसे प्राप्त किया जा सकता है? धन्यवाद।

1
Connor 27 नवम्बर 2021, 04:02
1
अगर आपको कुछ मदद चाहिए तो आपको अपना जेसन पोस्ट करना होगा। और आपकी कक्षाएं भी।
 – 
Serge
27 नवम्बर 2021, 04:18

1 उत्तर

कुछ इस तरह?

public T GetObjectDeserialized<T>(string mydata) {
         return JsonSerializer.Serialize<T>(mydata);
}

और फिर:

CurrentCar mycar = GetObjectDeserialized<CurrentCar.GetType()>(reader.ReadString());
-2
Leandro Bardelli 27 नवम्बर 2021, 04:43
क्या वह भी संकलित है?! GetType विधि की गणना करेगी रनटाइम पर प्रकार, जबकि जेनेरिक पैरामीटर को संकलन समय पर जाना जाना चाहिए .... इसके अलावा, मुझे नहीं पता कि आप विधि के साथ एक पंक्ति क्यों लपेटते हैं
 – 
Ibram Reda
27 नवम्बर 2021, 05:03
यह संकलित नहीं करता है। और यह मानता है कि ओपी के पास पहले से ही उस प्रकार का उदाहरण है जिसे वे deserialize करने की कोशिश कर रहे हैं।
 – 
Enigmativity
27 नवम्बर 2021, 06:53
आपने इसे उत्तर के रूप में क्यों रखा? जेनरिक रनटाइम पर हल नहीं कर सकता।
 – 
Andy
27 नवम्बर 2021, 06:59