Skip to content

Commit e57f5f3

Browse files
Add -RecurseNestedType param (#31)
1 parent ffd7881 commit e57f5f3

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

docs/en-US/Find-Member.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ Find properties, methods, fields, etc that fit specific criteria.
1616

1717
```powershell
1818
19-
Find-Member [[-FilterScript] <scriptblock>] [-ParameterType <ScriptBlockStringOrType>] [-GenericParameter <ScriptBlockStringOrType>] [-ParameterCount <RangeExpression[]>] [-GenericParameterCount <RangeExpression[]>] [-ReturnType <ScriptBlockStringOrType>] [-IncludeSpecialName] [-Decoration <ScriptBlockStringOrType>] [-MemberType <MemberTypes>] [-Static] [-Instance] [-Abstract] [-Virtual] [-Declared] [-IncludeObject] [-Name <string>] [-Force] [-RegularExpression] [-InputObject <psobject>] [-Not] [-ResolutionMap <hashtable>] [-AccessView <AccessView>] [<CommonParameters>]
19+
Find-Member [[-FilterScript] <scriptblock>] [-ParameterType <ScriptBlockStringOrType>] [-GenericParameter <ScriptBlockStringOrType>] [-ParameterCount <RangeExpression[]>] [-GenericParameterCount <RangeExpression[]>] [-ReturnType <ScriptBlockStringOrType>] [-IncludeSpecialName] [-Decoration <ScriptBlockStringOrType>] [-MemberType <MemberTypes>] [-Static] [-Instance] [-Abstract] [-Virtual] [-Declared] [-IncludeObject] [-RecurseNestedType] [-Name <string>] [-Force] [-RegularExpression] [-InputObject <psobject>] [-Not] [-ResolutionMap <hashtable>] [-AccessView <AccessView>] [<CommonParameters>]
2020
```
2121

2222
### ByName
2323

2424
```powershell
25-
Find-Member [[-Name] <string>] [-ParameterType <ScriptBlockStringOrType>] [-GenericParameter <ScriptBlockStringOrType>] [-ParameterCount <RangeExpression[]>] [-GenericParameterCount <RangeExpression[]>] [-ReturnType <ScriptBlockStringOrType>] [-IncludeSpecialName] [-Decoration <ScriptBlockStringOrType>] [-MemberType <MemberTypes>] [-Static] [-Instance] [-Abstract] [-Virtual] [-Declared] [-IncludeObject] [-FilterScript <scriptblock>] [-Force] [-RegularExpression] [-InputObject <psobject>] [-Not] [-ResolutionMap <hashtable>] [-AccessView <AccessView>] [<CommonParameters>]
25+
Find-Member [[-Name] <string>] [-ParameterType <ScriptBlockStringOrType>] [-GenericParameter <ScriptBlockStringOrType>] [-ParameterCount <RangeExpression[]>] [-GenericParameterCount <RangeExpression[]>] [-ReturnType <ScriptBlockStringOrType>] [-IncludeSpecialName] [-Decoration <ScriptBlockStringOrType>] [-MemberType <MemberTypes>] [-Static] [-Instance] [-Abstract] [-Virtual] [-Declared] [-IncludeObject] [-RecurseNestedType] [-FilterScript <scriptblock>] [-Force] [-RegularExpression] [-InputObject <psobject>] [-Not] [-ResolutionMap <hashtable>] [-AccessView <AccessView>] [<CommonParameters>]
2626
```
2727

2828
## DESCRIPTION
@@ -586,6 +586,24 @@ Accept pipeline input: False
586586
Accept wildcard characters: False
587587
```
588588

589+
### -RecurseNestedType
590+
591+
Nested types will by default be treated as members other members. When piping a nested
592+
type to this command, if you want to retrieve the members of the nested type
593+
can specify this parameter.
594+
595+
```yaml
596+
Type: SwitchParameter
597+
Parameter Sets: (All)
598+
Aliases: r
599+
600+
Required: False
601+
Position: Named
602+
Default value: None
603+
Accept pipeline input: False
604+
Accept wildcard characters: False
605+
```
606+
589607
### -ResolutionMap
590608

591609
Specifies a hashtable of `name` to `ScriptBlockStringOrType` to create your own keywords and/or override type resolution for any signature in this command.

src/ClassExplorer/Commands/FindMemberCommand.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,14 @@ public SwitchParameter IncludeObject
173173
set => _options.IncludeObject = value;
174174
}
175175

176+
[Parameter]
177+
[Alias("r")]
178+
public SwitchParameter RecurseNestedType
179+
{
180+
get => _options.RecurseNestedType;
181+
set => _options.RecurseNestedType = value;
182+
}
183+
176184
private MemberSearch<PipelineEmitter<MemberInfo>> _search = null!;
177185

178186
private protected override void OnNoInput()

src/ClassExplorer/MemberSearch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void Invoke(Type value)
4646

4747
public override void SearchSingleObject(PSObject pso)
4848
{
49-
if (pso.BaseObject is Type type)
49+
if (pso.BaseObject is Type type && (_options.RecurseNestedType || !type.IsNested))
5050
{
5151
SearchSingleType(type);
5252
return;

src/ClassExplorer/MemberSearchOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ internal class MemberSearchOptions : ReflectionSearchOptions
3131
public bool Declared { get; set; }
3232

3333
public bool IncludeObject { get; set; }
34+
35+
public bool RecurseNestedType { get; set; }
3436
}

test/Signatures.Tests.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,15 +278,15 @@ Describe 'Type signatures' {
278278
}'
279279

280280
$type.GetNestedTypes() |
281-
Find-Member -ParameterType { [T] } |
281+
Find-Member -RecurseNestedType -ParameterType { [T] } |
282282
Should -BeTheseMembers First, Second
283283

284284
$type.GetNestedTypes() |
285-
Find-Member -ParameterType { [TT] } |
285+
Find-Member -RecurseNestedType -ParameterType { [TT] } |
286286
Should -BeTheseMembers First
287287

288288
$type.GetNestedTypes() |
289-
Find-Member -ParameterType { [TM] } |
289+
Find-Member -RecurseNestedType -ParameterType { [TM] } |
290290
Should -BeTheseMembers Second
291291
}
292292

0 commit comments

Comments
 (0)