コード例 #1
0
        private void EditMessageProperties(ITypeVersionMessage gameEvent)
        {
            var props = gameEvent.GetType().GetProperties();

            foreach (var prop in props)
            {
                var propName = prop.Name;
                if (propName != "ClientUtcTime" && Program.PropertyCache.ContainsKey(propName))
                {
                    prop.SetValue(gameEvent, Program.PropertyCache[propName]);
                }
                var propValue = prop.GetValue(gameEvent);

                if (propName == "Type" || propName == "Version")
                {
                    // Don't ask for input for these properties, just display their
                    // values since they are static and can't be changed
                    Console.WriteLine($"{propName}: {propValue}");
                }
                else
                {
                    var propertyType = prop.PropertyType;
                    var o            = EditProperty(propName, propValue, propertyType);
                    prop.SetValue(gameEvent, o);
                    Program.PropertyCache[propName] = o;
                }
            }
        }
コード例 #2
0
        public async Task SendMessageAsync(ITypeVersionMessage msg, DateTime?dbgEnqueuedTimeUtc = null)
        {
            // Serialize object to JSON
            var json = JsonConvert.SerializeObject(
                msg,
                Formatting.Indented,
                new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            if (dbgEnqueuedTimeUtc.HasValue)
            {
                var o = JObject.Parse(json);
                o.Add("dbgEnqueuedTimeUtc", dbgEnqueuedTimeUtc);
                json = o.ToString();
            }

            await SendMessageAsync(json);
        }
コード例 #3
0
 private void TypedMessageSelected(ITypeVersionMessage gameEvent)
 {
     EditMessageProperties(gameEvent);
     _client.SendMessageAsync(gameEvent).Wait();
     _client.FlushAsync().Wait();
 }
コード例 #4
0
 public Task SendMessageAsync(ITypeVersionMessage msg, DateTime?dbgEnqueuedTimeUtc = null)
 {
     return(Task.CompletedTask);
 }