ipvalverde / PipelineNet

A micro framework that helps you implement the pipeline/chain of responsibility pattern.
MIT License
92 stars 25 forks source link

Add ServiceCollectionExtensions and ServiceProviderMiddlewareResolver #24

Open mariusz96 opened 3 weeks ago

mariusz96 commented 3 weeks ago

I could not stand that this is newing things up in the DI-enabled app so I went ahead and added:

Let me know how you feel about the changes, I think they're a significant improvement over the previous version of PipelineNet.ServiceProvider.

mariusz96 commented 2 weeks ago
+ namespace PipelineNet.ChainOfResponsibilityFactories

+ public interface IAsyncResponsibilityChainFactory<TParameter, TReturn>
+ {
+     IAsyncResponsibilityChain<TParameter, TReturn> Create();
+ }

+ public interface IResponsibilityChainFactory<TParameter, TReturn>
+ {
+     IResponsibilityChain<TParameter, TReturn> Create();
+ }

+ namespace PipelineNet.PipelineFactories

+ public interface IPipelineFactory<TParameter>
+ {
+     IPipeline<TParameter> Create();
+ }

+ public interface IAsyncPipelineFactory<TParameter>
+ {
+     IAsyncPipeline<TParameter> Create();
+ }
+ namespace PipelineNet.ChainOfResponsibilityFactories

+ public class AsyncResponsibilityChainFactory<TParameter, TReturn> : IAsyncResponsibilityChainFactory<TParameter, TReturn>
+ {
+     public IAsyncResponsibilityChain<TParameter, TReturn> Create();
+ }

+ public class ResponsibilityChainFactory<TParameter, TReturn> : IResponsibilityChainFactory<TParameter, TReturn>
+ {
+     public IResponsibilityChain<TParameter, TReturn> Create();
+ }

+ namespace PipelineNet.PipelineFactories

+ public class PipelineFactory<TParameter>: IPipelineFactory<TParameter>
+ {
+     public IPipeline<TParameter> Create();
+ }

+ public class AsyncPipelineFactory<TParameter> : IAsyncPipelineFactory<TParameter>
+ {
+     public IAsyncPipeline<TParameter> Create();
+ }
+ namespace PipelineNet.ServiceProvider.MiddlewareResolver

+ public class ServiceProviderMiddlewareResolver : IMiddlewareResolver
+ {
+     public MiddlewareResolverResult Resolve(Type type);
+ }
+ namespace PipelineNet.ServiceProvider

+ public static class ServiceCollectionExtensions
+ {
+     public static IServiceCollection AddPipelineNet(
+         this IServiceCollection services,
+         IEnumerable<Assembly> assemblies,
+         ServiceLifetime lifetime = ServiceLifetime.Scoped);

+     public static IServiceCollection AddPipelineNet(
+         this IServiceCollection services,
+         Assembly assembly,
+         ServiceLifetime lifetime = ServiceLifetime.Scoped);

+     public static IServiceCollection AddPipelineNetCore(
+         this IServiceCollection services,
+         ServiceLifetime lifetime = ServiceLifetime.Scoped);

+     public static IServiceCollection AddMiddlewareFromAssemblies(
+         this IServiceCollection services,
+         IEnumerable<Assembly> assemblies,
+         ServiceLifetime lifetime = ServiceLifetime.Scoped);

+     public static IServiceCollection AddMiddlewareFromAssembly(
+         this IServiceCollection services,
+         Assembly assembly,
+         ServiceLifetime lifetime = ServiceLifetime.Scoped);
+ }