コード例 #1
0
        public static void RegisterSharpRepository(this Container container, ISharpRepositoryConfiguration configuration)
        {

            container.ResolveUnregisteredType += (s, e) =>
            {
                var type = e.UnregisteredServiceType;
                if (type.IsGenericType)
                {
                    var args = type.GetGenericArguments();
                    var typedef = type.GetGenericTypeDefinition();
                    if (typedef == typeof(IRepository<>))
                    {
                        e.Register(() => RepositoryFactory.GetInstance(args[0], configuration));
                    }
                    else if (typedef == typeof(IRepository<,>))
                    {
                        e.Register(() => RepositoryFactory.GetInstance(args[0], args[1], configuration));
                    }
                    else if (typedef == typeof(ICompoundKeyRepository<,,>))
                    {
                        e.Register(() => RepositoryFactory.GetInstance(args[0], args[1], args[2], configuration));
                    }
                }
            };
        }
コード例 #2
0
        public static LambdaInstance<object> ForRepositoriesUseSharpRepository(this IInitializationExpression initialization, ISharpRepositoryConfiguration configuration)
        {
            initialization.Scan(scan => scan.IncludeNamespaceContainingType<IAmInRepository>());

            initialization.For(typeof(IRepository<>))
                                 .Use(context =>
                                 {
                                     var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                                     return RepositoryFactory.GetInstance(genericArgs[0], configuration);
                                 }
                );

            initialization.For(typeof(IRepository<,>))
                                 .Use(context =>
                                 {
                                     var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                                     return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], configuration);
                                 }
                );

            return initialization.For(typeof(ICompoundKeyRepository<,,>))
                                .Use(context =>
                                {
                                    var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                                    return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], genericArgs[2], configuration);
                                }
                );
        }
コード例 #3
0
        public static void ForRepositoriesUseSharpRepository(this ConfigurationExpression initialization, ISharpRepositoryConfiguration configuration)
        {
            initialization.Scan(scan => scan.IncludeNamespaceContainingType<IAmInRepository>());

            initialization.For(typeof(IRepository<>)).Use(new RepositoryNoKeyInstanceFactory(configuration));

            initialization.For(typeof(IRepository<,>)).Use(new RepositorySingleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository<,,>)).Use(new RepositoryDoubleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository<,,,>)).Use(new RepositoryTripleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository<>)).Use(new RepositoryCompoundKeyInstanceFactory(configuration));
        }
コード例 #4
0
        public static void BindSharpRepository(this IKernel kernel, ISharpRepositoryConfiguration configuration)
        {
            kernel.Bind(typeof (IRepository<>)).ToMethod(context =>
                {
                    var genericArgs = context.Request.ParentRequest.Service.GetGenericArguments();

                    return RepositoryFactory.GetInstance(genericArgs[0], configuration);
                });

            kernel.Bind(typeof(IRepository<,>)).ToMethod(context =>
                {
                    var genericArgs = context.Request.ParentRequest.Service.GetGenericArguments();

                    return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], configuration);
                });
        }
コード例 #5
0
        public static void RegisterSharpRepository(this IWindsorContainer container, ISharpRepositoryConfiguration configuration)
        {
            container.Register(Component.For(typeof(IRepository<>)).UsingFactoryMethod((c, t) =>
                {
                    var genericArgs = t.GenericArguments;

                    return RepositoryFactory.GetInstance(genericArgs[0], configuration);
                }));

            container.Register(Component.For(typeof(IRepository<>)).UsingFactoryMethod((c, t) =>
                {
                    var genericArgs = t.GenericArguments;

                    return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], configuration);
                }));
        }
コード例 #6
0
        public static object GetInstance(Type entityType, Type keyType, Type key2Type, Type key3Type, ISharpRepositoryConfiguration configuration, string repositoryName = null)
        {
            if (String.IsNullOrEmpty(repositoryName))
            {
                // if no specific repository is provided then check to see if the SharpRepositoryConfigurationAttribute is used
                repositoryName = GetAttributeRepositoryName(entityType);
            }

            var method        = typeof(ISharpRepositoryConfiguration).GetTypeInfo().DeclaredMethods.First(m => m.Name == "GetInstance" && m.ReturnType.Name == "ICompoundKeyRepository`4");
            var genericMethod = method.MakeGenericMethod(entityType, keyType, key2Type, key3Type);

            return(genericMethod.Invoke(configuration, new object[] { repositoryName }));
        }
コード例 #7
0
 public RepositoryFactory(ISharpRepositoryConfiguration configuration)
 {
     Configuration = configuration;
 }
コード例 #8
0
 public static IRepository <T, int> GetInstance <T>(ISharpRepositoryConfiguration configuration, string repositoryName = null) where T : class, new()
 {
     return(GetInstance <T, int>(configuration, repositoryName));
 }
コード例 #9
0
 public static void RegisterSharpRepository(this UnityContainer container, ISharpRepositoryConfiguration configuration)
 {
     throw new NotImplementedException();
 }
コード例 #10
0
        public static void ForRepositoriesUseSharpRepository(this ConfigurationExpression initialization, ISharpRepositoryConfiguration configuration)
        {
            initialization.Scan(scan => scan.IncludeNamespaceContainingType <IAmInRepository>());

            initialization.For(typeof(IRepository <>)).Use(new RepositoryNoKeyInstanceFactory(configuration));

            initialization.For(typeof(IRepository <,>)).Use(new RepositorySingleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository <, ,>)).Use(new RepositoryDoubleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository <, , ,>)).Use(new RepositoryTripleKeyInstanceFactory(configuration));

            initialization.For(typeof(ICompoundKeyRepository <>)).Use(new RepositoryCompoundKeyInstanceFactory(configuration));
        }
コード例 #11
0
 public RepositoryRegistrationSource(ISharpRepositoryConfiguration configuration, string repositoryName = null, params object[] lifetimeScopeTag)
 {
     Configuration    = configuration;
     RepositoryName   = repositoryName;
     LifetimeScopeTag = lifetimeScopeTag;
 }
コード例 #12
0
 public ConfigurationBasedRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null)
 {
     Repository = RepositoryFactory.GetInstance <T, TKey>(configuration, repositoryName);
 }
コード例 #13
0
 public RepositoryCompoundKeyInstance(ISharpRepositoryConfiguration configuration)
     : base(() => RepositoryFactory.GetCompoundKeyInstance <T>(configuration, null))
 {
 }
コード例 #14
0
 public UserFromConfigRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #15
0
        public static IServiceProvider UseSharpRepository(this IServiceCollection services, ISharpRepositoryConfiguration sharpRepoConfig, string repositoryName = null)
        {
            var container = new Container();

            container.Configure(config =>
            {
                config.Scan(x =>
                {
                    x.TheCallingAssembly();
                    x.AssembliesAndExecutablesFromApplicationBaseDirectory();
                    x.LookForRegistries();
                });

                config.ForRepositoriesUseSharpRepository(sharpRepoConfig, repositoryName);
                config.Populate(services);
            });

            var resolver = container.GetInstance <IServiceProvider>();

            RepositoryDependencyResolver.SetDependencyResolver(resolver);

            // Finally, make sure we return an IServiceProvider. This makes
            // ASP.NET use the StructureMap container to resolve its services.
            return(resolver);
        }
コード例 #16
0
 public RepositoryInstance(ISharpRepositoryConfiguration configuration, string repositoryName = null)
     : base(() => RepositoryFactory.GetInstance <T, TKey, TKey2>(configuration, repositoryName))
 {
 }
コード例 #17
0
 public WxOfficialRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #18
0
 public static void RegisterSharpRepository(this ContainerBuilder container, ISharpRepositoryConfiguration configuration)
 {
 }
コード例 #19
0
 public MaintenanceOrdersRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #20
0
 public sealed record ServiceManagerDeamonState(ISharpRepositoryConfiguration Repository);
コード例 #21
0
 public static void RegisterSharpRepository(this UnityContainer container, ISharpRepositoryConfiguration configuration)
 {
     throw new NotImplementedException();
 }
コード例 #22
0
 public static IActorRef Init(ActorSystem system, ISharpRepositoryConfiguration repository)
 => system.ActorOf("ServiceDeamon", Feature.Create(() => new ServiceManagerDeamon(), _ => new ServiceManagerDeamonState(repository)));
コード例 #23
0
 /// <summary>
 /// Registers in autofac container all IRepository and ICompoundKeyRepository resolutions.
 /// </summary>
 /// <param name="container"></param>
 /// <param name="configuration"></param>
 /// <param name="repositoryName"></param>
 /// <param name="lifetimeScopeTag">Accepts any MatchingScopeLifetimeTags scope enum tag</param>
 public static void RegisterSharpRepository(this ContainerBuilder container, ISharpRepositoryConfiguration configuration, string repositoryName = null, params object[] lifetimeScopeTag)
 {
     container.RegisterSource(new RepositoryRegistrationSource(configuration, repositoryName, lifetimeScopeTag));
 }
コード例 #24
0
        public static ICompoundKeyRepository <T, TKey, TKey2, TKey3> GetInstance <T, TKey, TKey2, TKey3>(ISharpRepositoryConfiguration configuration, string repositoryName) where T : class, new()
        {
            if (!configuration.HasRepository)
            {
                throw new Exception("There are no repositories configured");
            }

            var repositoryConfiguration = configuration.GetRepository(repositoryName);
            var repository = repositoryConfiguration.GetInstance <T, TKey, TKey2, TKey3>();

            if (repository == null)
            {
                return(null);
            }

            var strategyConfiguration = configuration.GetCachingStrategy(repositoryConfiguration.CachingStrategy);

            if (strategyConfiguration == null)
            {
                return(repository);
            }

            var cachingStrategy = strategyConfiguration.GetInstance <T, TKey, TKey2, TKey3>();

            if (cachingStrategy == null)
            {
                return(repository);
            }

            var providerConfiguration = configuration.GetCachingProvider(repositoryConfiguration.CachingProvider);

            if (providerConfiguration != null)
            {
                cachingStrategy.CachingProvider = providerConfiguration.GetInstance();
            }

            repository.CachingStrategy = cachingStrategy;

            return(repository);
        }
コード例 #25
0
 public OrdemManutencaoRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #26
0
 public WxNewsItemRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #27
0
        /// <summary>
        /// Configures StructureMap container telling to resolve IRepository and ICompoundKeyRepository with the repository from configuration
        /// </summary>
        /// <param name="init"></param>
        /// <param name="configuration"></param>
        /// <param name="repositoryName">name of repository implementation in configuration, null tell to use default in configuration</param>
        /// <param name="lifecycle">StructureMap coping of variables default is Lifecycle.Transient</param>
        public static void ForRepositoriesUseSharpRepository(this ConfigurationExpression init, ISharpRepositoryConfiguration configuration, string repositoryName = null, ILifecycle lifeCycle = null)
        {
            if (lifeCycle == null)
            {
                lifeCycle = Lifecycles.Transient;
            }

            init.For(typeof(IRepository <>))
            .LifecycleIs(lifeCycle)
            .Use(new RepositoryNoKeyInstanceFactory(configuration, repositoryName));

            init.For(typeof(IRepository <,>))
            .LifecycleIs(lifeCycle)
            .Use(new RepositorySingleKeyInstanceFactory(configuration, repositoryName));

            init.For(typeof(ICompoundKeyRepository <, ,>))
            .LifecycleIs(lifeCycle)
            .Use(new RepositoryDoubleKeyInstanceFactory(configuration, repositoryName));

            init.For(typeof(ICompoundKeyRepository <, , ,>))
            .LifecycleIs(lifeCycle)
            .Use(new RepositoryTripleKeyInstanceFactory(configuration, repositoryName));

            init.For(typeof(ICompoundKeyRepository <>))
            .LifecycleIs(lifeCycle)
            .Use(new RepositoryCompoundKeyInstanceFactory(configuration, repositoryName));
        }
コード例 #28
0
 public RepositoryNoKeyInstanceFactory(ISharpRepositoryConfiguration configuration, string repositoryName = null)
 {
     this.configuration  = configuration;
     this.repositoryName = repositoryName;
 }
コード例 #29
0
 public static object GetInstance(Type entityType, ISharpRepositoryConfiguration configuration, string repositoryName = null)
 {
     return(GetInstance(entityType, typeof(int), configuration, repositoryName));
 }
コード例 #30
0
 public RepositoryInstance(ISharpRepositoryConfiguration configuration, string repositoryName = null)
     : base(() => (IRepository <T>)RepositoryFactory.GetInstance(typeof(T), configuration, null))
 {
 }
コード例 #31
0
        public static ICompoundKeyRepository <T, TKey, TKey2, TKey3> GetInstance <T, TKey, TKey2, TKey3>(ISharpRepositoryConfiguration configuration, string repositoryName = null) where T : class, new()
        {
            if (String.IsNullOrEmpty(repositoryName))
            {
                // if no specific repository is provided then check to see if the SharpRepositoryConfigurationAttribute is used
                repositoryName = GetAttributeRepositoryName(typeof(T));
            }

            return(configuration.GetInstance <T, TKey, TKey2, TKey3>(repositoryName));
        }
コード例 #32
0
        public static LambdaInstance <object> ForRepositoriesUseSharpRepository(this IInitializationExpression initialization, ISharpRepositoryConfiguration configuration)
        {
            initialization.Scan(scan => scan.IncludeNamespaceContainingType <IAmInRepository>());

            initialization.For(typeof(IRepository <>))
            .Use(context =>
            {
                var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                return(RepositoryFactory.GetInstance(genericArgs[0], configuration));
            }
                 );

            initialization.For(typeof(IRepository <,>))
            .Use(context =>
            {
                var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                return(RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], configuration));
            }
                 );

            return(initialization.For(typeof(ICompoundKeyRepository <, ,>))
                   .Use(context =>
            {
                var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], genericArgs[2], configuration);
            }
                        ));
        }
コード例 #33
0
 public AreaRepository(ISharpRepositoryConfiguration configuration, string repositoryName = null) : base(configuration, repositoryName)
 {
 }
コード例 #34
0
 public RepositoryInstance(ISharpRepositoryConfiguration configuration)
     : base(() => RepositoryFactory.GetInstance <T, TKey>(configuration, null))
 {
 }
コード例 #35
0
 public RepositorySingleKeyInstanceFactory(ISharpRepositoryConfiguration configuration)
 {
     this.configuration = configuration;
 }
コード例 #36
0
 public RepositoryCompoundKeyInstance(ISharpRepositoryConfiguration configuration, string repositoryName = null)
     : base(() => RepositoryFactory.GetCompoundKeyInstance <T>(configuration, repositoryName))
 {
 }