public void NonMethodVirtualShouldSatisfyRequirementIfDeclaringTypeRegisteredForInterface()
        {
            WindsorContainer container = new WindsorContainer();
            var logger = LoggerFactory.Create <object>().BindToWindsor(container.Kernel);

            logger.LogInvocationOf <TestClass>(t => t.PublicNonVirtualMethod());
            MethodMustBeVirtualIfDeclaringTypeRegisteredOnlyForItself requirement = new MethodMustBeVirtualIfDeclaringTypeRegisteredOnlyForItself(container.Kernel);

            container.Register(Component.For <ITestClass>().ImplementedBy <TestClass>());

            Method <TestClass>(t => t.PublicNonVirtualMethod()).ShouldSatisfy(requirement);
        }
        private MethodMustBeVirtualIfDeclaringTypeRegisteredOnlyForItself ConfigureLoggerAndRegisterComponentForItself <TComponent>(Expression <Action <TComponent> > loggedMethod)
            where TComponent : class
        {
            WindsorContainer container = new WindsorContainer();
            var logger = LoggerFactory.Create <object>().BindToWindsor(container.Kernel);

            logger.LogInvocationOf(loggedMethod);
            MethodMustBeVirtualIfDeclaringTypeRegisteredOnlyForItself requirement = new MethodMustBeVirtualIfDeclaringTypeRegisteredOnlyForItself(container.Kernel);

            container.Register(Component.For <TComponent>().ImplementedBy <TComponent>());
            return(requirement);
        }