using System; using System.Collections.Generic; using System.Linq; public interface ISerializableContainer { public abstract ObjectContainerSerializable Serialize(); } [System.Serializable] public class ObjectContainerSerializable { public string Filename; public string GUID; public List Frames; public ObjectContainerSerializable() { } public ObjectContainerSerializable(ObjectContainer containerBase) { this.Filename = containerBase.name; this.GUID = containerBase.GUID; this.Frames = containerBase.Frames.Select(frame => new FrameContent(frame)).ToList(); } public ObjectContainerSerializable(ObjectContainerSerializable source) { this.Filename = source.Filename; this.GUID = source.GUID; this.Frames = source.Frames.Select(frame => new FrameContent(frame)).ToList(); } /// /// Call type's constructor with container as parameter /// /// Must derive from ObjectContainer /// Type must accept it as the only constructor parameter /// public static ObjectContainerSerializable Serialize(Type type, ObjectContainer container) { return Activator.CreateInstance(type, new object[] { container }) as ObjectContainerSerializable; } }