Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C#4.0
i have function which Deserialize a xml its generic type method.
 
code is :
 
public static T DeserializeFromXml<t>(string xml)
        {
            T result;
            XmlSerializer ser = new XmlSerializer(typeof(T));
            using (TextReader tr = new StringReader(xml))
            {
                result = (T)ser.Deserialize(tr);
            }
            return result;
        }
 
i can use this method in my application.
Now Problem is that i want to send T at runtime where i have to decide Type of T.
 
if i do :
var type = Obje1.GetType();
DeserializeFromXml<type>(FileXml) // it gives error
 
2nd option :
System.Type type = Obje1.GetType();
DeserializeFromXml<type>(FileXml) // it gives error
 
can any bodey help to pass Type at runtime?
i dont want to use if else or switch case like
if (obj1.GetType() == typeof(int))
 
Thanks in Advance.
Posted 22-Apr-13 21:17pm
v2

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

To use DeserializeFromXml<T>() you must supply the type at compile time :
public class mytype { ... }
 
DeserializeFromXml<mytype>(FileXml);
</mytype>
If you don't know the type at compile time then you should use :
public static object DeserializeFromXml(Type t, string xml)
        {
            object result;
            XmlSerializer ser = new XmlSerializer(t);
            using (TextReader tr = new StringReader(xml))
            {
                result = ser.Deserialize(tr);
            }
            return result;
        }
 
DeserializeFromXml(Obje1.GetType(), FileXml);
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Mathew Soji 334
1 Maciej Los 295
2 BillWoodruff 290
3 Afzaal Ahmad Zeeshan 257
4 DamithSL 225
0 OriginalGriff 6,369
1 Sergey Alexandrovich Kryukov 5,973
2 DamithSL 5,183
3 Manas Bhardwaj 4,673
4 Maciej Los 4,045


Advertise | Privacy | Mobile
Web02 | 2.8.1411019.1 | Last Updated 23 Apr 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100