diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs b/Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs new file mode 100644 index 000000000..2d00c8621 --- /dev/null +++ b/Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.Serialization +{ + /// <summary> + /// Contains a collection of IDataSerializer related helper methods. + /// </summary> + public static class SerializationHelper + { + /// <summary> + /// Gets a list of all IDataSerializer implemented types. + /// </summary> + /// <returns></returns> + public static List<Type> GetSerializersTypes() + { + var type = typeof(IDataSerializer); + var serializers = System.Reflection.Assembly.GetAssembly(type).GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsInterface); + return serializers.ToList(); + } + + /// <summary> + /// Gets a list of all IDataSerializer implemented instances. + /// </summary> + /// <returns></returns> + public static List<IDataSerializer> GetSerializersInstances() + { + var types = GetSerializersTypes(); + + List<IDataSerializer> serializers = new List<IDataSerializer>(); + + foreach (var type in types) + { + var instance = Activator.CreateInstance(type) as IDataSerializer; + serializers.Add(instance); + } + + return serializers; + } + + /// <summary> + /// Returns a serializer instance by type name. + /// </summary> + /// <param name="name">Name of IDataSerializer type.</param> + /// <returns></returns> + public static IDataSerializer GetSerializerByName(String name) + { + var types = GetSerializersTypes(); + var type = types.SingleOrDefault(x => x.Name == name); + return Activator.CreateInstance(type) as IDataSerializer; + } + + /// <summary> + /// Returns the name of the specified IDataSerializer. + /// </summary> + /// <param name="serializer">The specified IDataSerializer.</param> + /// <returns></returns> + public static String GetSerializerName(IDataSerializer serializer) + { + return serializer.GetType().Name; + } + } +} |
