Пример #1
0
        private static void Write(EventLog log, EventOperation operation, DTObject content)
        {
            //写入日志条目
            var index       = log.EntryCount;
            var contentCode = content.IsEmpty() ? "{}" : content.GetCode();
            var entry       = new EventLogEntry(log, operation, contentCode, index);
            var repository  = Repository.Create <IEventLogEntryRepository>();

            repository.Add(entry);

            log.EntryCount++;
            UpdateLog(log);
        }
Пример #2
0
        /// <summary>
        /// 以<paramref name="data"/>为数据格式创建前定义的类型的实例
        /// </summary>
        /// <param name="data"></param>
        internal DynamicObject CreateInstance(DTObject data)
        {
            if (data.IsEmpty())
            {
                return((DynamicObject)this.GetEmptyInstance());
            }
            DynamicObject obj = null;

            using (var temp = ArgsPool.Borrow2())
            {
                var args = temp.Item;
                args[0] = this;
                args[1] = false;
                obj     = (DynamicObject)this.Constructor.CreateInstance(args);
            }
            //加载数据
            obj.Load(data);
            return(obj);
        }
Пример #3
0
        public static DomainEvent GetLocalEvent(string eventName, DTObject args, bool throwError)
        {
            //因为领域事件的处理被事件锁锁了,所以这里不存在并发问题,不需要锁cache
            var tip = EventAttribute.GetTip(eventName, throwError);

            if (tip == null)
            {
                return(null);
            }
            if (!tip.IsEnabled)
            {
                return(null);                //如果宿主过滤该事件,那么事件不是本地的
            }
            var @event = (DomainEvent)tip.EventType.GetConstructor(Array.Empty <Type>()).CreateInstance(null);

            if (!args.IsEmpty())
            {
                @event.SetArgs(args);
            }
            return(@event);
        }
Пример #4
0
 private static byte[] Map(DTObject dto)
 {
     return(dto == null || dto.IsEmpty() ? Array.Empty <byte>() : dto.ToData());
 }