private PSMemberInfoInternalCollection <T> GetIntegratedMembers(
     MshMemberMatchOptions matchOptions)
 {
     using (PSObject.memberResolution.TraceScope("Generating the total list of members"))
     {
         PSMemberInfoInternalCollection <T> internalCollection = new PSMemberInfoInternalCollection <T>();
         PSObject particularInstance;
         if (this.mshOwner != null)
         {
             particularInstance = this.mshOwner;
             foreach (PSMemberInfo instanceMember in (PSMemberInfoCollection <PSMemberInfo>) this.mshOwner.InstanceMembers)
             {
                 if (instanceMember.MatchesOptions(matchOptions) && instanceMember is T member)
                 {
                     internalCollection.Add(member);
                 }
             }
         }
         else
         {
             particularInstance = this.memberSetOwner.instance;
             foreach (PSMemberInfo internalMember in (PSMemberInfoCollection <PSMemberInfo>) this.memberSetOwner.InternalMembers)
             {
                 if (internalMember.MatchesOptions(matchOptions) && internalMember is T member)
                 {
                     internalMember.ReplicateInstance(particularInstance);
                     internalCollection.Add(member);
                 }
             }
         }
         foreach (CollectionEntry <T> collection in this.collections)
         {
             foreach (T obj in (PSMemberInfoCollection <T>)collection.GetMembers(particularInstance))
             {
                 PSMemberInfo psMemberInfo = (PSMemberInfo)internalCollection[obj.Name];
                 if (psMemberInfo != null)
                 {
                     PSObject.memberResolution.WriteLine("Member \"{0}\" of type \"{1}\" has been ignored because a member with the same name and type \"{2}\" is already present.", (object)obj.Name, (object)obj.MemberType, (object)psMemberInfo.MemberType);
                 }
                 else if (!obj.MatchesOptions(matchOptions))
                 {
                     PSObject.memberResolution.WriteLine("Skipping hidden member \"{0}\".", (object)obj.Name);
                 }
                 else
                 {
                     T member = !collection.ShouldCloneWhenReturning ? obj : (T)obj.Copy();
                     if (collection.ShouldReplicateWhenReturning)
                     {
                         member.ReplicateInstance(particularInstance);
                     }
                     internalCollection.Add(member);
                 }
             }
         }
         return(internalCollection);
     }
 }
 internal override ReadOnlyPSMemberInfoCollection <T> Match(
     string name,
     PSMemberTypes memberTypes,
     MshMemberMatchOptions matchOptions)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw PSMemberInfoInternalCollection <T> .tracer.NewArgumentException(nameof (name));
     }
     return(new ReadOnlyPSMemberInfoCollection <T>(MemberMatch.Match <T>(this.GetInternalMembers(matchOptions), name, MemberMatch.GetNamePattern(name), memberTypes)));
 }
Ejemplo n.º 3
0
 internal bool MatchesOptions(MshMemberMatchOptions options)
 {
     if (this.IsHidden && ((options & MshMemberMatchOptions.IncludeHidden) == MshMemberMatchOptions.None))
     {
         return false;
     }
     if (!this.ShouldSerialize && ((options & MshMemberMatchOptions.OnlySerializable) != MshMemberMatchOptions.None))
     {
         return false;
     }
     return true;
 }
Ejemplo n.º 4
0
 internal bool MatchesOptions(MshMemberMatchOptions options)
 {
     if (this.IsHidden && ((options & MshMemberMatchOptions.IncludeHidden) == MshMemberMatchOptions.None))
     {
         return(false);
     }
     if (!this.ShouldSerialize && ((options & MshMemberMatchOptions.OnlySerializable) != MshMemberMatchOptions.None))
     {
         return(false);
     }
     return(true);
 }
        private PSMemberInfoInternalCollection <T> GetInternalMembers(
            MshMemberMatchOptions matchOptions)
        {
            PSMemberInfoInternalCollection <T> internalCollection = new PSMemberInfoInternalCollection <T>();

            foreach (T obj in (PSMemberInfoCollection <T>) this)
            {
                PSMemberInfo psMemberInfo = (PSMemberInfo)obj;
                if (psMemberInfo.MatchesOptions(matchOptions) && psMemberInfo is T member)
                {
                    internalCollection.Add(member);
                }
            }
            return(internalCollection);
        }
        private PSMemberInfoInternalCollection <T> GetInternalMembers(MshMemberMatchOptions matchOptions)
        {
            PSMemberInfoInternalCollection <T> internals = new PSMemberInfoInternalCollection <T>();

            lock (this.members)
            {
                foreach (T local in this.members.Values.OfType <T>())
                {
                    if (local.MatchesOptions(matchOptions))
                    {
                        internals.Add(local);
                    }
                }
            }
            return(internals);
        }
 internal override ReadOnlyPSMemberInfoCollection <T> Match(
     string name,
     PSMemberTypes memberTypes,
     MshMemberMatchOptions matchOptions)
 {
     using (PSObject.memberResolution.TraceScope("Matching \"{0}\"", (object)name))
     {
         if (string.IsNullOrEmpty(name))
         {
             throw PSMemberInfoIntegratingCollection <T> .tracer.NewArgumentException(nameof (name));
         }
         if (this.mshOwner != null)
         {
             this.GenerateAllReservedMembers();
         }
         WildcardPattern namePattern = MemberMatch.GetNamePattern(name);
         ReadOnlyPSMemberInfoCollection <T> memberInfoCollection = new ReadOnlyPSMemberInfoCollection <T>(MemberMatch.Match <T>(this.GetIntegratedMembers(matchOptions), name, namePattern, memberTypes));
         PSObject.memberResolution.WriteLine("{0} total matches.", (object)memberInfoCollection.Count);
         return(memberInfoCollection);
     }
 }
Ejemplo n.º 8
0
 private PSMemberInfoInternalCollection <T> GetIntegratedMembers(MshMemberMatchOptions matchOptions)
 {
     using (PSObject.memberResolution.TraceScope("Generating the total list of members", new object[0]))
     {
         object mshOwner;
         PSMemberInfoInternalCollection <T> internals = new PSMemberInfoInternalCollection <T>();
         if (this.mshOwner != null)
         {
             mshOwner = this.mshOwner;
             foreach (PSMemberInfo info in this.mshOwner.InstanceMembers)
             {
                 if (info.MatchesOptions(matchOptions))
                 {
                     T member = info as T;
                     if (member != null)
                     {
                         internals.Add(member);
                     }
                 }
             }
         }
         else
         {
             mshOwner = this.memberSetOwner.instance;
             foreach (PSMemberInfo info2 in this.memberSetOwner.InternalMembers)
             {
                 if (info2.MatchesOptions(matchOptions))
                 {
                     T local2 = info2 as T;
                     if (local2 != null)
                     {
                         info2.ReplicateInstance(mshOwner);
                         internals.Add(local2);
                     }
                 }
             }
         }
         if (mshOwner != null)
         {
             mshOwner = PSObject.AsPSObject(mshOwner);
             foreach (CollectionEntry <T> entry in this.collections)
             {
                 foreach (T local3 in entry.GetMembers((PSObject)mshOwner))
                 {
                     PSMemberInfo info3 = internals[local3.Name];
                     if (info3 != null)
                     {
                         PSObject.memberResolution.WriteLine("Member \"{0}\" of type \"{1}\" has been ignored because a member with the same name and type \"{2}\" is already present.", new object[] { local3.Name, local3.MemberType, info3.MemberType });
                     }
                     else if (!local3.MatchesOptions(matchOptions))
                     {
                         PSObject.memberResolution.WriteLine("Skipping hidden member \"{0}\".", new object[] { local3.Name });
                     }
                     else
                     {
                         T local4;
                         if (entry.ShouldCloneWhenReturning)
                         {
                             local4 = (T)local3.Copy();
                         }
                         else
                         {
                             local4 = local3;
                         }
                         if (entry.ShouldReplicateWhenReturning)
                         {
                             local4.ReplicateInstance(mshOwner);
                         }
                         internals.Add(local4);
                     }
                 }
             }
         }
         return(internals);
     }
 }
Ejemplo n.º 9
0
 internal abstract ReadOnlyPSMemberInfoCollection <T> Match(string name, PSMemberTypes memberTypes, MshMemberMatchOptions matchOptions);