Двойные Get-Members Powershell в C # - PullRequest
1 голос
/ 11 июня 2019

PowerShell имеет возможность перечислять методы и свойства объекта, которому присвоен GUID CLSID через командлет Get-Members.Например:

$test = [activator]::CreateInstance([type]::GetTypeFromCLSID("2735412C-7F64-5B0F-8F00-5D77AFBE261E"))
$test | Get-Member

Это дает следующий вывод: Выход PowerShell

Использование тех же методов в C # дает другие результаты.Я использую следующий код для перечисления объектов Методы, Свойства и члены:

Guid key = Guid.Parse("2735412C-7F64-5B0F-8F00-5D77AFBE261E");
Object instance = Activator.CreateInstance(Type.GetTypeFromCLSID(key));

MethodInfo[] methods = instance.GetType().GetMethods(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.ExactBinding | BindingFlags.Public | BindingFlags.NonPublic);
PropertyInfo[] props = instance.GetType().GetProperties(BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.ExactBinding | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
ConstructorInfo[] consts = instance.GetType().GetConstructors(BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.ExactBinding | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
MemberInfo[] members = instance.GetType().GetMembers(BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.ExactBinding | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);

foreach (MemberInfo member in members)
{
    Console.WriteLine(member.Name);
}

Это дает следующий вывод: C # Ouput

Любые идеи напочему это такая значительная разница.Вывод PowerShell отличный, но мне нужно сделать то же самое в C # ...

РЕДАКТИРОВАТЬ 1: Удалите BindingFlags. * Из методов Get, и результат будет выглядеть следующим образом C # Без BindingFlags

...