本文整理汇总了C#中Container.RegisterRuntimeDecorator方法的典型用法代码示例。如果您正苦于以下问题:C# Container.RegisterRuntimeDecorator方法的具体用法?C# Container.RegisterRuntimeDecorator怎么用?C# Container.RegisterRuntimeDecorator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Container
的用法示例。
在下文中一共展示了Container.RegisterRuntimeDecorator方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetInstance_OnRegisterRuntimeDecoratorRegistrationAndSingletonProxy_DecorationCanBeChangedDynamically
public void GetInstance_OnRegisterRuntimeDecoratorRegistrationAndSingletonProxy_DecorationCanBeChangedDynamically()
{
// Arrange
var container = new Container();
bool decorateHandler = false;
container.Register<ICommandHandler<RealCommand>, NullCommandHandler<RealCommand>>();
container.RegisterRuntimeDecorator(typeof(ICommandHandler<>), typeof(CommandHandlerDecorator<>),
c => decorateHandler);
container.RegisterDecorator(typeof(ICommandHandler<>), typeof(CommandHandlerProxy<>), Lifestyle.Singleton);
// Act
var handler1 =
((CommandHandlerProxy<RealCommand>)container.GetInstance<ICommandHandler<RealCommand>>())
.DecorateeFactory();
// Runtime switch
decorateHandler = true;
var handler2 =
((CommandHandlerProxy<RealCommand>)container.GetInstance<ICommandHandler<RealCommand>>())
.DecorateeFactory();
// Assert
AssertThat.IsInstanceOfType(typeof(NullCommandHandler<RealCommand>), handler1);
AssertThat.IsInstanceOfType(typeof(CommandHandlerDecorator<RealCommand>), handler2);
}
示例2: GetInstance_OnRegisterSingletonRuntimeDecoratorRegistration_CreatesTheDecoratorAsSingleton
public void GetInstance_OnRegisterSingletonRuntimeDecoratorRegistration_CreatesTheDecoratorAsSingleton()
{
// Arrange
var container = new Container();
bool decorateHandler = false;
container.Register<ICommandHandler<RealCommand>, NullCommandHandler<RealCommand>>(Lifestyle.Singleton);
container.RegisterRuntimeDecorator(typeof(ICommandHandler<>), typeof(CommandHandlerDecorator<>),
Lifestyle.Singleton, c => decorateHandler);
// Act
var handler1 = container.GetInstance<ICommandHandler<RealCommand>>();
// Runtime switch
decorateHandler = true;
var handler2 = container.GetInstance<ICommandHandler<RealCommand>>();
// Assert
AssertThat.IsInstanceOfType(typeof(NullCommandHandler<RealCommand>), handler1);
AssertThat.IsInstanceOfType(typeof(CommandHandlerDecorator<RealCommand>), handler2);
}
示例3: Container
public void GetInstance_OnRegisterRuntimeDecoratorRegistrationWithOverriddenLifestyleSelectionBehavior_CreatesTheDecoratorWithExpectedLifestyler()
{
// Arrange
var container = new Container();
container.Options.LifestyleSelectionBehavior =
new CustomLifestyleSelectionBehavior(Lifestyle.Singleton);
container.Register<ICommandHandler<RealCommand>, NullCommandHandler<RealCommand>>();
container.RegisterRuntimeDecorator(typeof(ICommandHandler<>), typeof(CommandHandlerDecorator<>),
c => true);
// Act
var handler1 = container.GetInstance<ICommandHandler<RealCommand>>();
var handler2 = container.GetInstance<ICommandHandler<RealCommand>>();
// Assert
Assert.AreSame(handler1, handler2);
}