using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.Serialization { /// /// Contains a collection of IDataSerializer related helper methods. /// public static class SerializationHelper { /// /// Gets a list of all IDataSerializer implemented types. /// /// public static List GetSerializersTypes() { var type = typeof(IDataSerializer); var serializers = System.Reflection.Assembly.GetAssembly(type).GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsInterface); return serializers.ToList(); } /// /// Gets a list of all IDataSerializer implemented instances. /// /// public static List GetSerializersInstances() { var types = GetSerializersTypes(); List serializers = new List(); foreach (var type in types) { var instance = Activator.CreateInstance(type) as IDataSerializer; serializers.Add(instance); } return serializers; } /// /// Returns a serializer instance by type name. /// /// Name of IDataSerializer type. /// public static IDataSerializer GetSerializerByName(String name) { var types = GetSerializersTypes(); var type = types.SingleOrDefault(x => x.Name == name); return Activator.CreateInstance(type) as IDataSerializer; } /// /// Returns the name of the specified IDataSerializer. /// /// The specified IDataSerializer. /// public static String GetSerializerName(IDataSerializer serializer) { return serializer.GetType().Name; } } }