protected TypeReferenceBase(IType typeInstance, ITypeReferenceCollection typeParameters) { this.typeInstance = typeInstance; if (typeParameters != null) { this.TypeParameters.AddRange(typeParameters.ToArray()); } }
/// <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); }
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); }
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); }