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; } } }
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); }
private void TypedMessageSelected(ITypeVersionMessage gameEvent) { EditMessageProperties(gameEvent); _client.SendMessageAsync(gameEvent).Wait(); _client.FlushAsync().Wait(); }
public Task SendMessageAsync(ITypeVersionMessage msg, DateTime?dbgEnqueuedTimeUtc = null) { return(Task.CompletedTask); }