You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Management.Automation;
|
|
using System.Text;
|
|
using ICSharpCode.Decompiler.CSharp;
|
|
using ICSharpCode.Decompiler.TypeSystem;
|
|
|
|
namespace ICSharpCode.Decompiler.PowerShell
|
|
{
|
|
[Cmdlet(VerbsCommon.Get, "DecompiledTypes")]
|
|
[OutputType(typeof(ITypeDefinition[]))]
|
|
public class GetDecompiledTypesCmdlet : PSCmdlet
|
|
{
|
|
[Parameter(Position = 0, Mandatory = true)]
|
|
public CSharpDecompiler Decompiler { get; set; }
|
|
|
|
[Parameter(Mandatory = true)]
|
|
public string[] Types { get; set; }
|
|
|
|
protected override void ProcessRecord()
|
|
{
|
|
HashSet<TypeKind> kinds = TypesParser.ParseSelection(Types);
|
|
|
|
try {
|
|
List<ITypeDefinition> output = new List<ITypeDefinition>();
|
|
foreach (var type in Decompiler.TypeSystem.MainModule.TypeDefinitions) {
|
|
if (!kinds.Contains(type.Kind))
|
|
continue;
|
|
output.Add(type);
|
|
}
|
|
|
|
WriteObject(output.ToArray());
|
|
} catch (Exception e) {
|
|
WriteVerbose(e.ToString());
|
|
WriteError(new ErrorRecord(e, ErrorIds.DecompilationFailed, ErrorCategory.OperationStopped, null));
|
|
}
|
|
}
|
|
}
|
|
}
|