本文整理汇总了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);
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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();
}