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 OriginalGriff 445
1 Suvendu Shekhar Giri 134
2 Abhinav S 126
3 Maciej Los 125
4 Peter Leow 120
0 Sergey Alexandrovich Kryukov 9,623
1 OriginalGriff 8,870
2 Peter Leow 4,984
3 Kornfeld Eliyahu Peter 3,300
4 Maciej Los 2,456


Advertise | Privacy | Mobile
Web02 | 2.8.150327.1 | Last Updated 23 Apr 2013
Copyright © CodeProject, 1999-2015
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