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); }
/// <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); }
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); }
private static byte[] Map(DTObject dto) { return(dto == null || dto.IsEmpty() ? Array.Empty <byte>() : dto.ToData()); }