Esempio n. 1
0
 protected TypeReferenceBase(IType typeInstance, ITypeReferenceCollection typeParameters)
 {
     this.typeInstance = typeInstance;
     if (typeParameters != null)
     {
         this.TypeParameters.AddRange(typeParameters.ToArray());
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Adds a new <typeparamref name="TItem"/> with the <paramref name="name"/>, <paramref name="constraints"/>,
        /// and <paramref name="requiresConstructor"/> provided.
        /// </summary>
        /// <param name="name">The name of the constraint.</param>
        /// <param name="constraints">The type-reference constraints for the resulted <paramref name="TItem"/>.</param>
        /// <param name="requiresConstructor">Whether or not the resulted <typeparamref name="TItem"/>
        /// has a null-constructor constraint.</param>
        /// <returns>A new <typeparamref name="TItem"/> named <paramref name="name"/> and
        /// has the null constructor constraint based upon <paramref name="requiresConstructor"/>
        /// and additional constraints as expressed by <paramref name="constraints"/>.</returns>
        public override ITypeParameterMember <TParentDom> AddNew(string name, ITypeReferenceCollection constraints, bool requiresConstructor, TypeParameterSpecialCondition specialCondition)
        {
            TypeParameterMember <TParentDom> item = new TypeParameterMember <TParentDom>(name, this.TargetDeclaration);

            item.RequiresConstructor = requiresConstructor;
            item.Constraints.AddRange(constraints.ToArray());
            item.SpecialCondition = specialCondition;
            this._Add(item.Name, item);
            return(item);
        }
Esempio n. 3
0
        public override IMethodTypeParameterMember AddNew(string name, ITypeReferenceCollection constraints, bool requiresConstructor, TypeParameterSpecialCondition specialCondition)
        {
            MethodTypeParameterMember result = new MethodTypeParameterMember(name, (IMethodMember)this.TargetDeclaration);

            result.Constraints.AddRange(constraints.ToArray());
            result.SpecialCondition    = specialCondition;
            result.RequiresConstructor = requiresConstructor;
            this._Add(result.GetUniqueIdentifier(), result);
            this.OnSignatureChanged();
            return(result);
        }
Esempio n. 4
0
        protected virtual ITypeReferenceCollection FillInTypeParameters(ITypeReferenceCollection originalSet)
        {
            List <IDeclarationTarget> parents = new List <IDeclarationTarget>();
            ITypeReferenceCollection  resultSet;

            if (originalSet == null)
            {
                resultSet = new TypeReferenceCollection();
            }
            else
            {
                resultSet = new TypeReferenceCollection(originalSet.ToArray());
            }
            for (IDeclarationTarget parent = this; ((parent != null) && (!(parent is INameSpaceDeclaration))); parent = parent.ParentTarget)
            {
                parents.Add(parent);
            }
            parents.Reverse();
            int skip = 0;

            for (IDeclarationTarget parent = parents[0]; parents.Count > 0; parents.RemoveAt(0), parent = parents.Count > 0 ? parents[0] : null)
            {
                if (parent is IParameteredDeclaredType)
                {
                    if (((IParameteredDeclaredType)parent).TypeParameters == null)
                    {
                        continue;
                    }
                    foreach (ITypeParameterMember itpm in ((IParameteredDeclaredType)parent).TypeParameters.Values)
                    {
                        if (skip++ >= resultSet.Count)
                        {
                            resultSet.Add(itpm);
                        }
                    }
                }
            }
            return(resultSet);
        }