aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs')
-rw-r--r--Software/Visual_Studio/Tango.Serialization/SerializationHelper.cs66
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;
+ }
+ }
+}