/// /////////////////////////////////////// /// 以下为本Package自己的任务 private void CollectEventsInOtherPackage(BaseProfile profile) { // 整合别的包里面的Action foreach (Type type in profile.GetAllTypes()) { if (type.IsSubclassOf(typeof(BaseEvent))) { EventsManagement.AddEventType(type.Name, type); } } }
private void CollectEventsInSelfPackage() { // 整合自己包里面的Action foreach (Type type in GetAllTypes()) { if (type.IsSubclassOf(typeof(BaseEvent))) { EventsManagement.AddEventType(type.Name, type); } } }
private void LoadEventsFromXml(IEnumerable level1Node) { #region events foreach (XmlNode level2Node in level1Node) { // level2 -- "events" //add if (level2Node.NodeType == XmlNodeType.Comment) { continue; } var level2Item = (XmlElement)level2Node; // 动态创建Event var Name = level2Item.GetAttribute("Name"); var EventType = level2Item.GetAttribute("Type"); var Event = EventsManagement.CreateEvent(EventType, Name); Event.OwnerResource = this; if (Event == null) { throw new Exception($"创建Event 名称{Name},类型{EventType}失败"); } if (Event.LoadFromConfig(level2Item)) { // 加入到Machine的Event集合 try { AddEvent(Event); } catch (Exception ex) { Log.Error($"加载机器{ResourceName} 的Event:{Name}出错:{ex}"); } } else { Log.Error($"加载机器{ResourceName} 的Event:{Name}出错"); } } #endregion }
public override bool LoadFromConfig(XmlElement level1Item) { try { var strContainer = level1Item.GetAttribute("Container"); var strEvent = level1Item.GetAttribute("Event"); var container = EventsManagement.GetContainer(strContainer); _event = container.GetEvent(strEvent); return(true); } catch (Exception ex) { Log.Error($"装载EventCondition {Name}时出错:{ex}"); return(false); } }
public Machine(string name) : base(name) { EventsManagement.AddEventContainer(this); }