/// <summary>
 ///     TDbContext is the default type for Repository<TEntity />'s dbContext injected paramter
 /// </summary>
 /// <param name="configuration"></param>
 /// <param name="builder"></param>
 /// <param name="defaultRepositoryType"></param>
 /// <param name="lifetime"></param>
 /// <returns></returns>
 public static Configuration UseEntityFrameworkComponents(this Configuration configuration,
                                                          IObjectProviderBuilder builder,
                                                          Type defaultRepositoryType,
                                                          ServiceLifetime lifetime = ServiceLifetime.Scoped)
 {
     builder = builder ?? ObjectProviderFactory.Instance.ObjectProviderBuilder;
     return(configuration.RegisterUnitOfWork(builder, lifetime)
            .RegisterRepositories(defaultRepositoryType, builder, lifetime));
 }
 public static Configuration RegisterRepositories(this Configuration configuration,
                                                  Type repositoryType,
                                                  IObjectProviderBuilder builder,
                                                  ServiceLifetime lifetime = ServiceLifetime.Scoped)
 {
     builder = builder ?? ObjectProviderFactory.Instance.ObjectProviderBuilder;
     builder.Register(typeof(IRepository <>), repositoryType, lifetime);
     builder.Register <IDomainRepository, DomainRepository>(lifetime);
     return(configuration);
 }
Exemplo n.º 3
0
 private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime)
 {
     // TODO: register other components or services
     providerBuilder.Register <IAuthorizationHandler, AppAuthorizationHandler>(ServiceLifetime.Singleton);
     providerBuilder.Register <ICommunityRepository, CommunityRepository>(lifetime);
     providerBuilder.Register <ICommunityService, CommunityService>(lifetime,
                                                                    new InterfaceInterceptorInjection(),
                                                                    new InterceptionBehaviorInjection());
     providerBuilder.Register <HomeController, HomeController>(lifetime,
                                                               new VirtualMethodInterceptorInjection(),
                                                               new InterceptionBehaviorInjection());
 }
 private static void RegisterHandlerFromType(IObjectProviderBuilder builder, Type type, ServiceLifetime lifetime)
 {
     if (!RegisteredHandlerTypes.Contains(type))
     {
         builder.Register(type,
                          type,
                          lifetime,
                          new VirtualMethodInterceptorInjection(),
                          new InterceptionBehaviorInjection());
         RegisteredHandlerTypes.Add(type);
     }
 }
        private static void RegisterHandlerFromAssembly(IObjectProviderBuilder builder, Assembly assembly, ServiceLifetime lifetime)
        {
            var handlerGenericTypes = new[]
            {
                typeof(ICommandAsyncHandler <ICommand>),
                typeof(ICommandHandler <ICommand>),
                typeof(IEventSubscriber <IEvent>),
                typeof(IEventAsyncSubscriber <IEvent>)
            }
            .Select(ht => ht.GetGenericTypeDefinition())
            .ToArray();

            var exportedTypes = assembly.GetExportedTypes()
                                .Where(x => !x.IsInterface && !x.IsAbstract &&
                                       x.GetInterfaces()
                                       .Any(y => y.IsGenericType &&
                                            handlerGenericTypes.Contains(y.GetGenericTypeDefinition())));

            foreach (var type in exportedTypes)
            {
                RegisterHandlerFromType(builder, type, lifetime);
            }
        }
Exemplo n.º 6
0
 public static IObjectProviderBuilder AddNamedScoped <TService, TImplementation>(this IObjectProviderBuilder builder, string name)
     where TImplementation : TService
 {
     return(builder.RegisterNamed <TService, TImplementation>(name, ServiceLifetime.Scoped));
 }
Exemplo n.º 7
0
 public static IObjectProviderBuilder AddScoped <TService, TImplementation>(this IObjectProviderBuilder builder)
     where TImplementation : TService
 {
     return(builder.Register <TService, TImplementation>(ServiceLifetime.Scoped));
 }
Exemplo n.º 8
0
 public static IObjectProviderBuilder AddNamedScoped <T>(this IObjectProviderBuilder builder, string name)
     where T : class
 {
     return(builder.RegisterNamed <T>(name, ServiceLifetime.Scoped));
 }
Exemplo n.º 9
0
 public static IObjectProviderBuilder AddScoped <T>(this IObjectProviderBuilder builder)
     where T : class
 {
     return(builder.Register <T>(ServiceLifetime.Scoped));
 }
Exemplo n.º 10
0
 public static IObjectProviderBuilder AddTransient <T>(this IObjectProviderBuilder builder)
     where T : class
 {
     return(builder.Register <T>(ServiceLifetime.Transient));
 }
Exemplo n.º 11
0
 private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime)
 {
     // TODO: register other components or services
     providerBuilder.Register <ICommunityRepository, CommunityRepository>(lifetime);
 }
Exemplo n.º 12
0
 private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime)
 {
     providerBuilder.Register <IBlogService, BlogService>(lifetime);
 }
Exemplo n.º 13
0
 private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime)
 {
 }
Exemplo n.º 14
0
 /// <summary>
 ///     this method can provider more functionality of ObjectProviderBuild
 /// </summary>
 /// <param name="providerBuilder"></param>
 /// <param name="lifetime"></param>
 private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime)
 {
     providerBuilder.Register <IDemoRepository, DemoRepository>(lifetime);
 }