Exemplo n.º 1
0
 public MyServiceDescriptor(Type serviceType, Func <IServiceProvider, object> factory, MyServiceLifetime lifetime)
 {
     ServiceType           = serviceType;
     ImplementationType    = factory.Method.ReturnType;
     ImplementationFactory = factory;
     Lifetime = lifetime;
 }
Exemplo n.º 2
0
 public MyServiceDescriptor(Type serviceType, object implementation, MyServiceLifetime lifetime)
 {
     ServiceType        = serviceType;
     ImplementationType = implementation.GetType();
     Implementation     = implementation;
     Lifetime           = lifetime;
 }
Exemplo n.º 3
0
        public static MyServiceCollection AddMyMediator(this MyServiceCollection services, MyServiceLifetime lifetime, params Type[] markers)
        {
            var handlersInfo = new Dictionary <Type, Type>();

            foreach (Type marker in markers)
            {
                var assembly = marker.Assembly;
                var requests = GetClassesImplementingInterface(assembly, typeof(IRequest <>));
                var handlers = GetClassesImplementingInterface(assembly, typeof(IRequestHandler <,>));

                foreach (Type request in requests)
                {
                    Type requestHandler = handlers.SingleOrDefault(h => request == h.GetInterfaces().First().GetGenericArguments().First());
                    handlersInfo.Add(request, requestHandler);
                }

                var serviceDescriptor = handlers.Select(x => new MyServiceDescriptor(x, x, lifetime));

                services.AddServiceDescriptor(serviceDescriptor);
            }

            services.RegisterSingleton <IMediator>(x => new MyMediator(x.GetService, handlersInfo));

            return(services);
        }
Exemplo n.º 4
0
 public MyServiceDescriptor(Type serviceType, Type implementationType, MyServiceLifetime lifetime)
 {
     ServiceType        = serviceType;
     ImplementationType = implementationType;
     Lifetime           = lifetime;
 }