public void AddMembers(IMemberProducer members) { var current = candidateInfos.Peek(); foreach (var entry in members.TypesByName) { current.Types.AddCandidates( entry.Key, entry.Value.Select(Expression.Constant).ToArray()); } foreach (var entry in members.FieldsByName) { current.Fields.AddCandidates( entry.Key, entry.Value.Select(fi => (fi.IsLiteral || fi.IsInitOnly) ? (Expression)Expression.Constant(fi.GetValue(null)) : (Expression)Expression.Field(null, fi)).ToArray()); } foreach (var entry in members.PropertiesByName) { current.Properties.AddCandidates( entry.Key, entry.Value.Select(pi => Expression.Property(null, pi)).ToArray()); } foreach (var entry in members.MethodsByName) { current.Methods.AddCandidates( entry.Key, entry.Value.ToArray()); } }
public NespStandardMemberProducer(IMemberProducer members) { this.TypesByName = FixupMemberNames(members.TypesByName, GetTypeName); this.FieldsByName = FixupMemberNames(members.FieldsByName, GetMemberName); this.PropertiesByName = FixupMemberNames(members.PropertiesByName, GetMemberName); this.MethodsByName = FixupMemberNames(members.MethodsByName, GetMemberName); }
public async Task <IMemberProducer> GetMemberProducerAsync() { return(cached ?? (cached = await this.CreateMemberProducerAsync())); }