public void CanSetPropertyWithGenericParameterArrayType()
        {
            IUnityContainer container = new UnityContainer()
                                        .RegisterType(typeof(ClassWithOneArrayGenericParameter <>),
                                                      new InjectionConstructor(),
                                                      new InjectionProperty("InjectedValue", new GenericParameter("T()")));

            Account a0 = new Account();

            container.RegisterInstance <Account>("a1", a0);
            Account a1 = new Account();

            container.RegisterInstance <Account>("a2", a1);
            Account a2 = new Account();

            container.RegisterInstance <Account>(a2);

            ClassWithOneArrayGenericParameter <Account> result
                = container.Resolve <ClassWithOneArrayGenericParameter <Account> >();

            Assert.IsTrue(result.DefaultConstructorCalled);
            Assert.AreEqual(2, result.InjectedValue.Length);
            Assert.AreSame(a0, result.InjectedValue[0]);
            Assert.AreSame(a1, result.InjectedValue[1]);
        }
        public void CanCallConstructorTakingGenericParameterArrayWithValues()
        {
            IUnityContainer container = new UnityContainer()
                                        .RegisterType(
                typeof(ClassWithOneArrayGenericParameter <>),
                new InjectionConstructor(
                    new GenericResolvedArrayParameter(
                        "T",
                        new GenericParameter("T", "a2"),
                        new GenericParameter("T", "a1"))));

            Account a0 = new Account();

            container.RegisterInstance <Account>("a0", a0);
            Account a1 = new Account();

            container.RegisterInstance <Account>("a1", a1);
            Account a2 = new Account();

            container.RegisterInstance <Account>("a2", a2);

            ClassWithOneArrayGenericParameter <Account> result
                = container.Resolve <ClassWithOneArrayGenericParameter <Account> >();

            Assert.IsFalse(result.DefaultConstructorCalled);
            Assert.AreEqual(2, result.InjectedValue.Length);
            Assert.AreSame(a2, result.InjectedValue[0]);
            Assert.AreSame(a1, result.InjectedValue[1]);
        }