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 Kornfeld Eliyahu Peter 275
1 Maciej Los 214
2 Sergey Alexandrovich Kryukov 200
3 King Fisher 185
4 OriginalGriff 163
0 OriginalGriff 6,223
1 DamithSL 4,724
2 Maciej Los 4,196
3 Kornfeld Eliyahu Peter 3,894
4 Sergey Alexandrovich Kryukov 3,496


Advertise | Privacy | Mobile
Web02 | 2.8.141220.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