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;
}
}
}