public void AddRange()
        {
            CodeTypeParameter tp1 = new CodeTypeParameter();
            CodeTypeParameter tp2 = new CodeTypeParameter();
            CodeTypeParameter tp3 = new CodeTypeParameter();

            CodeTypeParameterCollection coll1 = new CodeTypeParameterCollection();

            coll1.Add(tp1);
            coll1.Add(tp2);

            CodeTypeParameterCollection coll2 = new CodeTypeParameterCollection();

            coll2.Add(tp3);
            coll2.AddRange(coll1);
            Assert.AreEqual(3, coll2.Count, "#1");
            Assert.AreEqual(1, coll2.IndexOf(tp1), "#2");
            Assert.AreEqual(2, coll2.IndexOf(tp2), "#3");
            Assert.AreEqual(0, coll2.IndexOf(tp3), "#4");

            CodeTypeParameterCollection coll3 = new CodeTypeParameterCollection();

            coll3.Add(tp3);
            coll3.AddRange(new CodeTypeParameter[] { tp1, tp2 });
            Assert.AreEqual(3, coll2.Count, "#5");
            Assert.AreEqual(1, coll2.IndexOf(tp1), "#6");
            Assert.AreEqual(2, coll2.IndexOf(tp2), "#7");
            Assert.AreEqual(0, coll2.IndexOf(tp3), "#8");
        }
예제 #2
0
        static void AddGenericTypeParameters(CodeTypeParameterCollection declarationTypeParameters, Type[] typeParameters, HashSet <string> importNamespaces)
        {
            declarationTypeParameters.AddRange(Array.ConvertAll(typeParameters, parameter =>
            {
                var constraints          = parameter.GetGenericParameterConstraints();
                var parameterDeclaration = new CodeTypeParameter(parameter.Name);
                for (int i = 0; i < constraints.Length; i++)
                {
                    var constraintDeclaration = constraints[i] == typeof(ValueType)
                        ? new CodeTypeReference(constraints[i])
                        : GetTypeReference(constraints[i], importNamespaces);
                    parameterDeclaration.Constraints.Add(constraintDeclaration);
                }

                var classConstraint = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.ReferenceTypeConstraint);
                if (classConstraint)
                {
                    parameterDeclaration.Constraints.Add(typeof(object));
                }
                var structConstraint   = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.NotNullableValueTypeConstraint);
                var defaultConstructor = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.DefaultConstructorConstraint);
                parameterDeclaration.HasConstructorConstraint = defaultConstructor && !structConstraint;
                return(parameterDeclaration);
            }));
        }
        public void AddRange_Self()
        {
            CodeTypeParameterCollection coll = new CodeTypeParameterCollection();

            coll.Add(new CodeTypeParameter());
            Assert.AreEqual(1, coll.Count, "#1");
            coll.AddRange(coll);
            Assert.AreEqual(2, coll.Count, "#2");
        }
        public void AddRange_Null_Collection()
        {
            CodeTypeParameterCollection coll = new CodeTypeParameterCollection();

            coll.AddRange((CodeTypeParameterCollection)null);
        }