public virtual void RefParameterMethod2()
        {
            IUnityContainer container = this.GetContainer();

            IParameterTestClass testClass = container.Resolve <IParameterTestClass>();
            string reference = "merry";

            testClass.RefParameterMethod2(ref reference);

            Assert.AreEqual("merryxmas", reference);
            Assert.AreEqual(1, container.Resolve <TestCallHandler>("TestCallHandler").InterceptionCount);
        }
        public virtual void RefParameterMethod1()
        {
            IUnityContainer container = this.GetContainer();

            IParameterTestClass testClass = container.Resolve <IParameterTestClass>();
            int reference = 5;

            testClass.RefParameterMethod1(ref reference);

            Assert.AreEqual(6, reference);
            Assert.AreEqual(1, container.Resolve <TestCallHandler>("TestCallHandler").InterceptionCount);
        }
        public virtual void OutParameterMethod3()
        {
            IUnityContainer container = this.GetContainer();

            IParameterTestClass testClass = container.Resolve <IParameterTestClass>();

            ParameterTestClass.FooClass reference;
            testClass.OutParameterMethod3(out reference);

            Assert.IsNotNull(reference);
            Assert.AreEqual(1, container.Resolve <TestCallHandler>("TestCallHandler").InterceptionCount);
        }
        public virtual void OutParameterMethod4()
        {
            IUnityContainer container = this.GetContainer();

            IParameterTestClass testClass = container.Resolve <IParameterTestClass>();

            ParameterTestClass.FooStruct reference         = new ParameterTestClass.FooStruct();
            ParameterTestClass.FooStruct referenceOriginal = reference;
            testClass.OutParameterMethod4(out reference);

            Assert.AreNotSame(referenceOriginal, reference);
            Assert.AreEqual(1, container.Resolve <TestCallHandler>("TestCallHandler").InterceptionCount);
        }
        public virtual void RefParameterMethod3()
        {
            IUnityContainer container = this.GetContainer();

            IParameterTestClass testClass = container.Resolve <IParameterTestClass>();

            ParameterTestClass.FooClass reference         = new ParameterTestClass.FooClass();
            ParameterTestClass.FooClass referenceOriginal = reference;
            testClass.RefParameterMethod3(ref reference);

            Assert.AreNotSame(referenceOriginal, reference);
            Assert.IsNotNull(reference);
            Assert.AreEqual(1, container.Resolve <TestCallHandler>("TestCallHandler").InterceptionCount);
        }