Last active
August 31, 2018 05:40
-
-
Save ForeverZer0/e433a29b6bd9185bdc2ccfafd4b917af to your computer and use it in GitHub Desktop.
Simple utility methods for reading/writing objects decorated with DataContractAttribute in XML format.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static bool Serialize<T>(T obj, Stream stream) | |
{ | |
try | |
{ | |
var xml = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 }; | |
var serializer = new DataContractSerializer(typeof(T)); | |
using (var writer = XmlWriter.Create(stream, xml)) | |
{ | |
serializer.WriteObject(writer, obj); | |
} | |
return true; | |
} | |
catch (Exception) | |
{ | |
return false; | |
} | |
} | |
public static bool Serialize<T>(T obj, string filename) | |
{ | |
try | |
{ | |
using (var stream = File.Open(filename, FileMode.Create, FileAccess.Write)) | |
{ | |
return Serialize(obj, stream); | |
} | |
} | |
catch (Exception e) | |
{ | |
return false; | |
} | |
} | |
public static object Deserialize(Type type, string filename) | |
{ | |
try | |
{ | |
using (var stream = File.OpenRead(filename)) | |
{ | |
return Deserialize(type, stream); | |
} | |
} | |
catch (Exception) | |
{ | |
return null; | |
} | |
} | |
public static object Deserialize(Type type, Stream stream) | |
{ | |
try | |
{ | |
var serializer = new DataContractSerializer(type); | |
return serializer.ReadObject(stream); | |
} | |
catch (Exception) | |
{ | |
return null; | |
} | |
} | |
public static T Deserialize<T>(string filename) | |
{ | |
try | |
{ | |
using (var stream = File.OpenRead(filename)) | |
{ | |
return (T) Deserialize(typeof(T), stream); | |
} | |
} | |
catch (Exception) | |
{ | |
return default(T); | |
} | |
} | |
public static T Deserialize<T>(Stream stream) => (T) Deserialize(typeof(T), stream); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment