/// <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); }
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); } }
public static IObjectProviderBuilder AddNamedScoped <TService, TImplementation>(this IObjectProviderBuilder builder, string name) where TImplementation : TService { return(builder.RegisterNamed <TService, TImplementation>(name, ServiceLifetime.Scoped)); }
public static IObjectProviderBuilder AddScoped <TService, TImplementation>(this IObjectProviderBuilder builder) where TImplementation : TService { return(builder.Register <TService, TImplementation>(ServiceLifetime.Scoped)); }
public static IObjectProviderBuilder AddNamedScoped <T>(this IObjectProviderBuilder builder, string name) where T : class { return(builder.RegisterNamed <T>(name, ServiceLifetime.Scoped)); }
public static IObjectProviderBuilder AddScoped <T>(this IObjectProviderBuilder builder) where T : class { return(builder.Register <T>(ServiceLifetime.Scoped)); }
public static IObjectProviderBuilder AddTransient <T>(this IObjectProviderBuilder builder) where T : class { return(builder.Register <T>(ServiceLifetime.Transient)); }
private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime) { // TODO: register other components or services providerBuilder.Register <ICommunityRepository, CommunityRepository>(lifetime); }
private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime) { providerBuilder.Register <IBlogService, BlogService>(lifetime); }
private static void RegisterComponents(IObjectProviderBuilder providerBuilder, ServiceLifetime lifetime) { }
/// <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); }