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))); }
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; }
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); } }
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); } }
internal abstract ReadOnlyPSMemberInfoCollection <T> Match(string name, PSMemberTypes memberTypes, MshMemberMatchOptions matchOptions);