Ejemplo n.º 1
0
        /// <summary>
        /// 创建合约事件
        /// </summary>
        public IContractEvent CreateContractEvent <T>(IContractEventData contractEventData) where T : IContractEvent
        {
            IContractEvent contractEvent = Activator.CreateInstance <T>();

            contractEvent.Id = Guid.NewGuid().ToString();
            contractEvent.ContractEventData = contractEventData;
            return(contractEvent);
        }
Ejemplo n.º 2
0
        public IEnumerable <string> Get()
        {
            IContractEvent contractEvent = ContractEventFactory.Instance.CreateContractEvent <StandardContractEvent>(new ContractEventData()
            {
                Description = "早上7点前起床"
            });
            IContractChip contractChip = ContractChipFactory.Instance.CreateContractChip <StandardContractChip>(new ContractChipData()
            {
                Description = "得到1毛钱"
            });
            IContractData contractData = new ContractData()
            {
                InitiatorIds    = new string[] { "A" },
                ActorIds        = new string[] { "B" },
                ContractEventId = contractEvent.Id,
                ContractChipId  = contractChip.Id
            };
            IContract contract = ContractFactory.Instance.CreateContract <Contract>(contractData);

            //保存到数据库
            _context.ContractEvents.Add(
                new DbContractEvent()
            {
                Id       = Guid.Parse(contractEvent.Id),
                JsonData = ContractEventFactory.Instance.SerializeContractEventData(contractEvent)
            }
                );
            _context.ContractChips.Add(
                new DbContractChip()
            {
                Id       = Guid.Parse(contractChip.Id),
                JsonData = ContractChipFactory.Instance.SerializeContractChipData(contractChip)
            }
                );
            _context.Contracts.Add(
                new DbContract()
            {
                Id       = Guid.Parse(contract.Id),
                JsonData = ContractFactory.Instance.SerializeContractData(contract)
            }
                );

            _context.SaveChanges();

            //返回结果
            return(new string[]
            {
                ContractFactory.Instance.SerializeContractData(contract),
                ContractEventFactory.Instance.SerializeContractEventData(contractEvent),
                ContractChipFactory.Instance.SerializeContractChipData(contractChip)
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 解析合约事件
        /// </summary>
        public IContractEvent ParseContractEvent <T1, T2>(string id, string jsonData) where T1 : IContractEvent where T2 : IContractEventData
        {
            IContractEventData contractEventData = JsonConvert.DeserializeObject <T2>(jsonData);
            IContractEvent     contractEvent     = null;

            if (contractEventData != null && !string.IsNullOrEmpty(id))
            {
                contractEvent    = Activator.CreateInstance <T1>();
                contractEvent.Id = id;
                contractEvent.ContractEventData = contractEventData;
            }
            return(contractEvent);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 序列化合约事件数据
        /// </summary>
        public string SerializeContractEventData(IContractEvent contractEvent)
        {
            string jsonData = JsonConvert.SerializeObject(contractEvent.ContractEventData);

            return(jsonData);
        }