IEnumerable <IMethod> GetConstructorsImpl(Predicate <IMethod> filter) { bool foundCtor = false; foreach (IMethod m in this.Methods) { if (m.IsConstructor && !m.IsStatic) { foundCtor = true; if (filter == null || filter(m)) { yield return(m); } } } if (this.AddDefaultConstructorIfRequired) { if (kind == TypeKind.Class && !foundCtor && !this.IsStatic || kind == TypeKind.Enum || kind == TypeKind.Struct) { var m = DefaultMethod.CreateDefaultConstructor(this); if (filter == null || filter(m)) { yield return(m); } } } }
public virtual IEnumerable <IMethod> GetConstructors(ITypeResolveContext context, Predicate <IMethod> filter = null) { ITypeDefinition compound = GetCompoundClass(); if (compound != this) { return(compound.GetConstructors(context, filter)); } List <IMethod> methods = new List <IMethod>(); AddFilteredRange(methods, this.Methods.Where(m => m.IsConstructor && !m.IsStatic), filter); if (this.AddDefaultConstructorIfRequired) { if (this.ClassType == ClassType.Class && methods.Count == 0 || this.ClassType == ClassType.Enum || this.ClassType == ClassType.Struct) { var m = DefaultMethod.CreateDefaultConstructor(this); if (filter == null || filter(m)) { methods.Add(m); } } } return(methods); }
public IEnumerable <IMethod> GetConstructors(ITypeResolveContext context, Predicate <IMethod> filter = null) { if (HasDefaultConstructorConstraint || HasValueTypeConstraint) { DefaultMethod m = DefaultMethod.CreateDefaultConstructor(GetDummyClassForTypeParameter()); if (filter(m)) { return new [] { m } } ; } return(EmptyList <IMethod> .Instance); }
public IEnumerable <IMethod> GetConstructors(ITypeResolveContext context, Predicate <IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers) { if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) { if (HasDefaultConstructorConstraint || HasValueTypeConstraint) { DefaultMethod m = DefaultMethod.CreateDefaultConstructor(GetDummyClassForTypeParameter()); if (filter(m)) { return new [] { m } } ; } return(EmptyList <IMethod> .Instance); } else { return(GetMembersHelper.GetConstructors(this, context, filter, options)); } }