public void Add(Dictionary <string, Type> addTypes) { this.allTypes.Clear(); foreach (var kv in addTypes) { this.allTypes[kv.Key] = kv.Value; } this.types.Clear(); List <Type> baseAttributeTypes = GetBaseAttributes(); foreach (Type baseAttributeType in baseAttributeTypes) { foreach (var kv in this.allTypes) { Type type = kv.Value; if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(baseAttributeType, true); if (objects.Length == 0) { continue; } this.types.Add(baseAttributeType, type); } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent iEvent = Activator.CreateInstance(type) as IEvent; if (iEvent != null) { Type eventType = iEvent.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(iEvent); } } }
public void Add(Assembly assembly) { this.assemblies[$"{assembly.GetName().Name}.dll"] = assembly; this.types.Clear(); foreach (Assembly value in this.assemblies.Values) { foreach (Type type in value.GetTypes()) { if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(typeof(BaseAttribute), true); if (objects.Length == 0) { continue; } foreach (BaseAttribute baseAttribute in objects) { this.types.Add(baseAttribute.AttributeType, type); } } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent obj = Activator.CreateInstance(type) as IEvent; if (obj == null) { throw new Exception($"type not is AEvent: {obj.GetType().Name}"); } Type eventType = obj.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(obj); } this.Load(); }
private SelectEventSystem() { typeSystems = new TypeSystems(); foreach (Type type in EventSystem.Instance.GetTypes(typeof(SelectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } }
public void Add(Type[] addTypes) { this.allTypes.Clear(); foreach (Type addType in addTypes) { this.allTypes[addType.FullName] = addType; } this.types.Clear(); List <Type> baseAttributeTypes = GetBaseAttributes(addTypes); foreach (Type baseAttributeType in baseAttributeTypes) { foreach (Type type in addTypes) { if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(baseAttributeType, true); if (objects.Length == 0) { continue; } this.types.Add(baseAttributeType, type); } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent obj = Activator.CreateInstance(type) as IEvent; if (obj == null) { throw new Exception($"type not is AEvent: {obj.GetType().Name}"); } Type eventType = obj.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(obj); } }