protected LoggedServiceBase(IServiceContext context, IService service) { Log = context.LogServiceMethod; Service = service; }
private void ExtractArgumentsFromRemoteContext(CodeActivityContext context, RemoteDebugExecutionContext updatedContext, LogServiceMethod logServiceMethod) { logServiceMethod.Invoke(nameof(ExtractArgumentsFromRemoteContext), $"{updatedContext.Arguments.Count} Arguments"); foreach (var argument in updatedContext.Arguments) { logServiceMethod.Invoke(nameof(ExtractArgumentsFromRemoteContext), $"argument {argument.Key}"); var property = GetType().GetProperty(argument.Key); if (property == null) { break; } if (typeof(OutArgument).IsAssignableFrom(property.PropertyType) || typeof(InOutArgument).IsAssignableFrom(property.PropertyType)) { logServiceMethod.Invoke(nameof(ExtractArgumentsFromRemoteContext), $"Argument {argument.Key} is InOutArgument or OutArgument"); var setMethod = property.PropertyType.GetMethod("Set", new[] { typeof(CodeActivityContext), typeof(object) }); logServiceMethod.Invoke(nameof(ExtractArgumentsFromRemoteContext), $"Setter {setMethod?.Name}"); if (setMethod != null) { setMethod.Invoke(property.GetValue(this), new[] { context, argument.Value }); } } } }
public DefaultService(IServiceContext context) { _context = context; Log = context.LogServiceMethod; }