/// <summary> /// 添加事件 /// </summary> /// <param name="key">唯一键(如果Key是字符串类型,则寻找当前ASM下面匹配的ASM文档)</param> /// <param name="EventType">事件枚举值</param> /// <param name="RegisterMethod">事件执行方法</param> /// <param name="NeedRemove">是否需要移除已存在事件</param> internal void Add(object Key, SEEvent EventType, Action <object[]> RegisterMethod, bool NeedRemove = false) { lock (_mLock) { //系统事件 if (CheckSolidEdgeApplicationEvent(Key, EventType, RegisterMethod, true, NeedRemove)) { return; } //文档事件 if (NeedRemove) { Remove(Key, EventType); } SolidEdgeDocumentEventHelper Helper = new SolidEdgeDocumentEventHelper(EventType, RegisterMethod); if (!_mDicHelperOfDoc.ContainsKey(Key)) { _mDicHelperOfDoc.Add(Key, new Dictionary <SEEvent, SolidEdgeDocumentEventHelper>(new EnumComparer <SEEvent>()) { [EventType] = Helper }); } else { if (!_mDicHelperOfDoc[Key].ContainsKey(EventType)) { _mDicHelperOfDoc[Key].Add(EventType, Helper); } else { throw new ArgumentException("重复添加事件:" + EventType.ToString()); } } Helper.RegisterSolidEdgeEvent(GetActiveObjectDocument()); } }