本文整理汇总了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;
}
}
示例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");
//.........这里部分代码省略.........
示例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>();
//.........这里部分代码省略.........