Creates a Castle Proxy to wrap all requested interfaces
Inheritance: AbstractObjectConstructionTask
        public void Execute_ArgsNotNull_ReturnsAndDoesNothing()
        {
            //Arrange
            var args = new ObjectConstructionArgs(null,null, null, null, new ModelCounter());
            var expected = new object();
            args.Result = expected;

            var task = new CreateMultiInferaceTask();
            
            //Act
            task.Execute(args);

            //Assert
            Assert.AreEqual(expected, args.Result);
        }
        public void Execute_ArgsNotNullOneInterface_ReturnsNull()
        {
            //Arrange

            var config1 = new StubAbstractTypeConfiguration();

            config1.Type = typeof(IStubTarget);

            var args = new ObjectConstructionArgs(null, null,  config1 , null, new ModelCounter());

            var task = new CreateMultiInferaceTask();

            //Act
            task.Execute(args);

            //Assert
            Assert.IsNull(args.Result);
        }
        public void Execute_ArgsNotNullMultipleInterface_ReturnsMultiInterfaceProxy()
        {
            //Arrange

            var config1 = new StubAbstractTypeConfiguration();
            var config2 = new StubAbstractTypeConfiguration();

            config1.Type = typeof(IStubTarget);
            config2.Type = typeof(IStubTarget2);

          //  var args = new ObjectConstructionArgs(null, null, new[] { config1, config2 }, null);
            var args = new ObjectConstructionArgs(null, null, config1,  null, new ModelCounter());
            args.Parameters[CreateMultiInferaceTask.MultiInterfaceConfigsKey] = new[] {config2};
            var task = new CreateMultiInferaceTask();

            //Act
            task.Execute(args);

            //Assert
            Assert.IsNotNull(args.Result);
            Assert.IsTrue(args.Result is IStubTarget);
            Assert.IsTrue(args.Result is IStubTarget2);
        }
        public void Execute_ArgsNotNullMultipleTypesNotAllInterfaces_ReturnsNull()
        {
            //Arrange

            var config1 = new StubAbstractTypeConfiguration();
            var config2 = new StubAbstractTypeConfiguration();

            config1.Type = typeof(IStubTarget);
            config2.Type = typeof(StubClass);

            var args = new ObjectConstructionArgs(null, null, config2 , null);
            //var args = new ObjectConstructionArgs(null, null, new[] { config1, config2 }, null);

            var task = new CreateMultiInferaceTask();

            //Act
            task.Execute(args);

            //Assert
            Assert.IsNull(args.Result);
        }