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


C# Container.RegisterConditional方法代码示例

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


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

示例1: Container

        public void GetInstance_ConditionalTypeFactoryReturnsSameTypeForSingletonRegistration_DependencyIsAlwaysSameInstance()
        {
            // Arrange
            var container = new Container();

            container.RegisterConditional(
                typeof(ILogger),
                c => typeof(Logger<int>),
                Lifestyle.Singleton,
                c => true);

            // Act
            var a = container.GetInstance<ServiceDependingOn<ILogger>>();
            var b = container.GetInstance<ComponentDependingOn<ILogger>>();

            // Assert
            Assert.AreSame(a.Dependency, b.Dependency);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:18,代码来源:RegisterConditionalTests.cs

示例2: GetInstance_ConditionalNonGenericRegistrationWithFactory_InjectsTheExpectedImplementation

        public void GetInstance_ConditionalNonGenericRegistrationWithFactory_InjectsTheExpectedImplementation()
        {
            // Arrange
            var container = new Container();

            container.RegisterConditional(typeof(ILogger),
                c => typeof(Logger<>).MakeGenericType(c.Consumer.ImplementationType),
                Lifestyle.Singleton,
                c => true);

            // Act
            ILogger logger = container.GetInstance<ServiceDependingOn<ILogger>>().Dependency;

            // Assert
            AssertThat.IsInstanceOfType(typeof(Logger<ServiceDependingOn<ILogger>>), logger);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:16,代码来源:RegisterConditionalTests.cs

示例3: GetInstance_RegisterTypeWithFactoryReturningTypeWithUnresolvableArgument_ThrowsExceptedException

        public void GetInstance_RegisterTypeWithFactoryReturningTypeWithUnresolvableArgument_ThrowsExceptedException()
        {
            // Arrange
            var container = new Container();
            
            container.RegisterConditional(typeof(IOpenGenericWithPredicate<>),
                c => typeof(OpenGenericWithUnresolvableArgument<,>),
                Lifestyle.Transient,
                c => true);

            // Act
            Action action = () => container.GetInstance<IOpenGenericWithPredicate<int>>();

            // Assert
            AssertThat.ThrowsWithExceptionMessageContains<ActivationException>(
                typeof(OpenGenericWithUnresolvableArgument<,>).ToFriendlyName() +
                " contains unresolvable type arguments.", action);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:18,代码来源:RegisterConditionalTests.cs

示例4: RegisterWithFactory_FactoryThatReturnsNull_ThrowsExpectedExceptionWhenResolving

        public void RegisterWithFactory_FactoryThatReturnsNull_ThrowsExpectedExceptionWhenResolving()
        {
            // Arrange
            var container = new Container();

            container.RegisterConditional(typeof(IOpenGenericWithPredicate<>),
                c => null,
                Lifestyle.Transient,
                c => true);

            // Act
            Action action = () => container.GetInstance<IOpenGenericWithPredicate<int>>();

            // Assert
            AssertThat.ThrowsWithExceptionMessageContains<InvalidOperationException>(
                "The type factory delegate that was registered for service type " +
                "IOpenGenericWithPredicate<T> returned null.", 
                action);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:19,代码来源:RegisterConditionalTests.cs

示例5: GetInstance_RegisterTypeFactoryReturningAPartialOpenGenericType_WorksLikeACharm

        public void GetInstance_RegisterTypeFactoryReturningAPartialOpenGenericType_WorksLikeACharm()
        {
            // Arrange
            var container = new Container();

            // Here we make a partial open-generic type by filling in the TUnresolved.
            container.RegisterConditional(typeof(IOpenGenericWithPredicate<>),
                c => typeof(OpenGenericWithUnresolvableArgument<,>)
                    .MakePartialOpenGenericType(
                        secondArgument: typeof(double)),
                Lifestyle.Transient,
                c => true);

            // Act
            var service = container.GetInstance<ServiceDependingOn<IOpenGenericWithPredicate<string>>>();

            var result = service.Dependency;

            // Assert
            AssertThat.IsInstanceOfType(typeof(OpenGenericWithUnresolvableArgument<string, double>), result);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:21,代码来源:RegisterConditionalTests.cs

示例6: Verify_UnusedConditionalRegistration_DoesNotResultInDiagnosticWarnings

        public void Verify_UnusedConditionalRegistration_DoesNotResultInDiagnosticWarnings()
        {
            // Arrange
            var container = new Container();

            container.Register<ServiceDependingOn<ICommandHandler<RealCommand>>>();

            container.Register<ICommandHandler<RealCommand>, RealCommandHandler>(Lifestyle.Singleton);

            container.RegisterConditional(typeof(ICommandHandler<>), typeof(DefaultCommandHandler<>), Lifestyle.Singleton,
                c => !c.Handled);

            container.RegisterDecorator(typeof(ICommandHandler<>), typeof(CommandHandlerDecorator<>), Lifestyle.Singleton);

            // Act
            container.Verify();
        }
开发者ID:BrettJaner,项目名称:SimpleInjector,代码行数:17,代码来源:TornLifestyleContainerAnalyzerTests.cs


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