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