当前位置: 首页>>代码示例>>C#>>正文


C# DependencyInjectionContainer.RegisterCustomResolver方法代码示例

本文整理汇总了C#中DependencyInjectionContainer.RegisterCustomResolver方法的典型用法代码示例。如果您正苦于以下问题:C# DependencyInjectionContainer.RegisterCustomResolver方法的具体用法?C# DependencyInjectionContainer.RegisterCustomResolver怎么用?C# DependencyInjectionContainer.RegisterCustomResolver使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DependencyInjectionContainer的用法示例。


在下文中一共展示了DependencyInjectionContainer.RegisterCustomResolver方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ConfigureDefaultDependencies

        /// <summary>
        /// Configures the default dependencies.
        /// </summary>
        /// <param name="dependencyInjectionContainer">The dependency injection container.</param>
        public void ConfigureDefaultDependencies(DependencyInjectionContainer dependencyInjectionContainer)
        {
            ExceptionUtilities.CheckArgumentNotNull(dependencyInjectionContainer, "dependencyInjectionContainer");

            foreach (var param in this.TestParameters)
            {
                dependencyInjectionContainer.TestParameters[param.Key] = param.Value;
            }

            // set up dependency injector
            dependencyInjectionContainer.RegisterCustomResolver(typeof(Logger), this.GetLoggerForType).Transient();
            dependencyInjectionContainer.RegisterInstance<IDependencyInjector>(dependencyInjectionContainer);
            dependencyInjectionContainer.InjectDependenciesInto(dependencyInjectionContainer);
            dependencyInjectionContainer.InjectDependenciesInto(this.implementationSelector);

            this.implementations = this.implementationSelector.GetImplementations(this.TestParameters).ToList();

            // only register dependencies that cannot already be resolved (unless the dependency was specified as a
            // test parameter, in which case override the default)
            foreach (var implInfo in this.implementations.Where(i => i.IsTestParameterSpecified || !dependencyInjectionContainer.CanResolve(i.ContractType)))
            {
                var options = dependencyInjectionContainer.Register(implInfo.ContractType, implInfo.ImplementationType);
                options.IsTransient = implInfo.IsTransient;
            }
        }
开发者ID:larsenjo,项目名称:odata.net,代码行数:29,代码来源:DependencyInjectionConfigurator.cs

示例2: ConfigureDependencies

        public static void ConfigureDependencies(DependencyInjectionContainer container)
        {
            ILinqToAstoriaQueryEvaluationStrategy strategy;
            if (!container.TryResolve<ILinqToAstoriaQueryEvaluationStrategy>(out strategy))
            {
                container.Register<ILinqToAstoriaQueryEvaluationStrategy, LinqToAstoriaClrQueryEvaluationStrategy>();
                container.Register<IPrimitiveDataTypeResolver, NullPrimitiveDataTypeResolver>();
            }

            container.Register<IQueryDataSetBuilder, AstoriaQueryDataSetBuilder>();
            container.Register<IQueryRepositoryBuilder, AstoriaQueryRepositoryBuilderBase>();
            container.Register<IQueryExpressionEvaluator, LinqToAstoriaEvaluator>();
            container.Register<ILinqToAstoriaQueryResolver, LinqToAstoriaQueryResolver>();
            container.Register<ILinqToAstoriaQuerySpanGenerator, LinqToAstoriaQuerySpanGenerator>();
            container.Register<IClientQueryResultComparer, ClientQueryResultComparer>();
            container.Register<IOracleBasedDataSynchronizer, QueryDataSetSynchronizer>();
            container.Register<ILinqResultComparerContextAdapter, LinqResultComparerDataServiceContextAdapter>();
            container.Register<IQueryValueDeepCopyingVisitor, AstoriaQueryValueDeepCopyingVisitor>();
            container.Register<ISpatialClrTypeResolver, SpatialClrTypeResolver>();
            container.Register<ISpatialDataTypeDefinitionResolver, SpatialDataTypeDefinitionResolver>();

            container.RegisterCustomResolver(
                typeof(QueryRepository),
                resolver =>
                {
                    var workspace = container.Resolve<AstoriaWorkspace>();
                    if (workspace.CurrentQueryRepository == null)
                    {
                        var queryTypeLibrary = container.Resolve<QueryTypeLibrary>();
                        var queryRepositoryBuilder = container.Resolve<IQueryRepositoryBuilder>();
                        var queryRepository = queryRepositoryBuilder.CreateQueryRepository(workspace.ConceptualModel, queryTypeLibrary, workspace.DownloadedEntityContainerData);
                        workspace.CurrentQueryRepository = queryRepository;
                    }

                    return workspace.CurrentQueryRepository;
                });

            container.RegisterCustomResolver(
               typeof(IQueryDataSet),
               resolver =>
               {
                   var queryRepository = container.Resolve<QueryRepository>();
                   return queryRepository.DataSet;
               });

            container.RegisterServiceReference<IDataOracleService>(
               () =>
               {
                   var workspace = container.Resolve<AstoriaWorkspace>();
                   return workspace.OracleServiceUri;
               });

            container.RegisterCustomResolver(
                typeof(IEntitySetResolver),
                esResolver =>
                {
                    var workspace = container.Resolve<AstoriaWorkspace>();
                    return workspace.EntitySetResolver;
                });

            container.RegisterCustomResolver(
                typeof(IQueryTypeLibraryBuilder),
                queryTypeLibBuilderResolver =>
                {
                    var queryEvaluationStrategy = container.Resolve<ILinqToAstoriaQueryEvaluationStrategy>();
                    var primitiveTypeResolver = container.Resolve<IPrimitiveDataTypeResolver>();
                    var edmDataTypeResolver = container.Resolve<EdmDataTypeResolver>();
                    return new AstoriaQueryTypeLibraryBuilder(queryEvaluationStrategy, primitiveTypeResolver, edmDataTypeResolver);
                });

            container.RegisterCustomResolver(
                typeof(QueryTypeLibrary),
                queryTypeLib =>
                {
                    var workspace = container.Resolve<AstoriaWorkspace>();
                    if (workspace.CurrentQueryRepository == null)
                    {
                        var queryTypeLibraryBuilder = container.Resolve<IQueryTypeLibraryBuilder>();
                        var queryTypeLibrary = queryTypeLibraryBuilder.BuildLibraryWithoutClrTypeMapping(workspace.ConceptualModel);
                        queryTypeLibrary.UpdateClrTypeMapping(workspace.Assemblies.Select(ac => ac.Contents).ToArray());
                        return queryTypeLibrary;
                    }
                    else
                    {
                        return workspace.CurrentQueryRepository.TypeLibrary;
                    }
                });

            container.RegisterCustomResolver(
                typeof(IEntityModelConceptualDataServices),
                t =>
                {
                    var workspace = container.Resolve<AstoriaWorkspace>();

                    // Add data generation hints before creating structural data services
                    ResolveDataGenerationHints(workspace.ConceptualModel, container);

                    var builder = container.Resolve<IEntityModelConceptualDataServicesFactory>();
                    var services = builder.CreateConceptualDataServices(workspace.ConceptualModel);
                    ExceptionUtilities.CheckObjectNotNull(services, "Structural data services builder returned null unexpectedly");
//.........这里部分代码省略.........
开发者ID:larsenjo,项目名称:odata.net,代码行数:101,代码来源:AstoriaTestServices.cs

示例3: ConfigureDependenciesHelper

        /// <summary>
        /// The configuration of these dependencies will be called from other testcase hierarchies that do not inherit from this class.
        /// This method can be used in such hierarchies.
        /// </summary>
        /// <param name="container">container on which to register impelemntation dependencies</param>
        public static void ConfigureDependenciesHelper(DependencyInjectionContainer container)
        {
            container.Register<IClrTypeReferenceResolver, StronglyTypedClrTypeReferenceResolver>();
            container.Register<IObjectLayerCodeGenerator, StronglyTypedObjectLayerCodeGenerator>();
            container.Register<IQueryEvaluationStrategy, ClrQueryEvaluationStrategy>();
            container.Register<IModelGenerator, ODataV2ModelGenerator>();
            container.Register<IWorkspaceBuilder, ODataWorkspaceBuilder>(); // Is this also needed , since we register Custom Resolver below
            container.Register<IQueryRepositoryBuilder, AstoriaQueryRepositoryBuilderBase>();
            container.Register<IQueryDataSetBuilder, ODataQueryDataSetBuilder>();

            container.Register<IResourceLookup, AssemblyResourceLookup>();
            container.Register<IStringResourceVerifier, StringResourceVerifier>();
            container.Register<IQueryScalarValueToClrValueComparer, QueryScalarValueToClrValueComparer>();
            container.Register<IQueryExpressionEvaluator, LinqToAstoriaEvaluator>();
            container.Register<IClientCodeLayerGenerator, PocoClientCodeLayerGenerator>();

            container.Register<ILinqToAstoriaQueryEvaluationStrategy, LinqToAstoriaClrQueryEvaluationStrategy>();
            container.Register<IPrimitiveDataTypeResolver, NullPrimitiveDataTypeResolver>();
            container.Register<ILinqResultComparerContextAdapter, ODataObjectResultComparerContextAdapter>();

            container.Register<ISpatialClrTypeResolver, SpatialClrTypeResolver>();
            container.Register<ISpatialDataTypeDefinitionResolver, SpatialDataTypeDefinitionResolver>();
            container.Register<IPayloadTransformFactory, ODataLibPayloadTransformFactory>();

            container.RegisterCustomResolver(
                typeof(ODataTestWorkspace),
                t =>
                {
                    var builder = container.Resolve<ODataWorkspaceBuilder>();
                    var modelGenerator = container.Resolve<IModelGenerator>();
                    var workspace = builder.BuildWorkspace(modelGenerator.GenerateModel());
                    
                    return workspace;
                });

            container.RegisterCustomResolver(
                typeof(IQueryTypeLibraryBuilder),
                queryTypeLibBuilderResolver =>
                {
                    var queryEvaluationStrategy = container.Resolve<ILinqToAstoriaQueryEvaluationStrategy>();
                    var primitiveTypeResolver = container.Resolve<IPrimitiveDataTypeResolver>();
                    return new AstoriaQueryTypeLibraryBuilder(queryEvaluationStrategy, primitiveTypeResolver, new EdmDataTypeResolver());
                });

            // IQueryDataSet is built by the repository builder
            container.RegisterCustomResolver(
                typeof(IQueryDataSet),
                    t =>
                    {
                        var repository = container.Resolve<QueryRepository>();
                        return repository.DataSet;
                    });

            container.RegisterCustomResolver(
                typeof(QueryTypeLibrary),
                queryTypeLib =>
                {
                    var workspace = container.Resolve<ODataTestWorkspace>();
                    var queryTypeLibraryBuilder = container.Resolve<IQueryTypeLibraryBuilder>();
                    var queryTypeLibrary = queryTypeLibraryBuilder.BuildLibraryWithoutClrTypeMapping(workspace.ConceptualModel);
                    if (workspace.ObjectLayerAssembly != null)
                    {
                        queryTypeLibrary.UpdateClrTypeMapping(new[] { workspace.ObjectLayerAssembly });
                    }

                    return queryTypeLibrary;
                });

            container.RegisterCustomResolver(
                typeof(EntityContainerData),
                t =>
                {
                    // TODO: All Query tests fail when there is actual data, for now starting with empty data
                    var workspace = container.Resolve<ODataTestWorkspace>();
                    EntityContainerData data = null;
                    data = new EntityContainerData(workspace.ConceptualModel.GetDefaultEntityContainer());
                    
                    //var dataPopulationDriver = container.Resolve<EntityContainerDataPopulationDriver>();
                    //dataPopulationDriver.ThresholdForNumberOfEntities = -1;
                    //dataPopulationDriver.EntityContainer = workspace.ConceptualModel.GetDefaultEntityContainer();
                    //dataPopulationDriver.TryPopulateNextData(out data);
                    
                    return data;
                });

            // QueryRepository is constructed by calling IQueryRepositoryBuilder.CreateQueryRepository
            container.RegisterCustomResolver(
                typeof(QueryRepository),
                t =>
                {
                    var repositoryBuilder = container.Resolve<IQueryRepositoryBuilder>();
                    var workspace = container.Resolve<ODataTestWorkspace>();
                    var queryTypeLibrary = container.Resolve<QueryTypeLibrary>();
                    var entityContaineData = container.Resolve<EntityContainerData>();

//.........这里部分代码省略.........
开发者ID:AlineGuan,项目名称:odata.net,代码行数:101,代码来源:ODataTaupoTestUtils.cs


注:本文中的DependencyInjectionContainer.RegisterCustomResolver方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。