using System; using System.Collections.Generic; using System.Linq; using Encompass.Exceptions; namespace Encompass { [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] public class Writes : Attribute { public readonly HashSet WriteTypes = new HashSet(); public readonly Dictionary Priorities = new Dictionary(); public Writes(params Type[] writeTypes) { foreach (var writeType in writeTypes) { var isComponent = writeType.GetInterfaces().Contains(typeof(IComponent)); if (!isComponent) { throw new IllegalWriteTypeException("{0} must be a Component", writeType.Name); } this.WriteTypes.Add(writeType); } } public Writes(Type writeType, int priority) { var isComponent = writeType.GetInterfaces().Contains(typeof(IComponent)); if (!isComponent) { throw new IllegalWriteTypeException("{0} must be a Component", writeType.Name); } WriteTypes.Add(writeType); Priorities.Add(writeType, priority); } } }