public ThingActivatorTest() { _fixture = new Fixture(); _service = Substitute.For <IServiceProvider>(); _option = new ThingBindingOption(); _activator = new ThingActivator(_option); }
public static void AddThing(this IServiceCollection services, Action <ThingBindingOption> thingOptions) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (thingOptions == null) { throw new ArgumentNullException(nameof(thingOptions)); } var option = new ThingBindingOption(); thingOptions(option); services.AddSingleton(option); services.AddRouting(); services.AddWebSockets(options => { }); services.AddCors(); services.AddSingleton <ServiceRouteBuilder>(); services.TryAddSingleton(typeof(ThingMarkService)); services.TryAddSingleton <IThingActivator, ThingActivator>(); services.TryAddSingleton <IActionActivator, ActionActivator>(); services.TryAddSingleton <IJsonSerializerSettings>(service => new JsonSerializerSettings( new JsonSerializerOptions { WriteIndented = false, IgnoreNullValues = true, DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, })); services.TryAddSingleton <IJsonSerializer, JsonSerializer>(); services.TryAddSingleton <IJsonSchemaValidator, JsonSchemaValidator>(); services.TryAddSingleton <IJsonValue, JsonValue>(); services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.TryAddScoped <IHttpRouteValue, HttpRouteValue>(); services.TryAddScoped <IHttpBodyWriter, HttpPipeWriter>(); services.TryAddScoped <IHttpBodyReader, HttpPipeReader>(); services.TryAddSingleton <IWsUrlBuilder, WsUrlBuilder>(); services.TryAddSingleton <IDescriptor <Action>, ActionDescriptor>(); services.TryAddSingleton <IDescriptor <Event>, EventDescriptor>(); services.TryAddSingleton <IDescriptor <Property>, PropertyDescriptor>(); services.TryAddSingleton <IDescriptor <Thing>, ThingDescriptor>(); services.TryAddTransient <IEventCollection, EventCollection>(); services.AddHostedService <ActionExecutorHostedService>(); var block = new BufferBlock <Action>(); services.AddSingleton <ISourceBlock <Action> >(block); services.AddSingleton <ITargetBlock <Action> >(block); services.AddTransient <WebSocketProcessor>(); services.TryAddEnumerable(ServiceDescriptor.Transient <IWebSocketAction, AddEventSubscription>()); services.TryAddEnumerable(ServiceDescriptor.Transient <IWebSocketAction, RequestAction>()); services.TryAddEnumerable(ServiceDescriptor.Transient <IWebSocketAction, SetThingProperty>()); }
public ServiceRouteBuilder(ThingBindingOption option) { _option = option; }
public ThingActivator(ThingBindingOption option) { _option = option; }