Esempio n. 1
0
        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());
            }
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 public async Task <IMemberProducer> GetMemberProducerAsync()
 {
     return(cached ?? (cached = await this.CreateMemberProducerAsync()));
 }