Синтаксис, требующий объяснения

#powershell #syntax

#powershell #синтаксис

Вопрос:

В этом скрипте: WindowsCredentialVault.psm1, я вижу этот код :

 function InitializeWindowsCredential
{
    Write-Verbose ("Loading PasswordVault Class.")
    [void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
}

InitializeWindowsCredential
  

Однако я не понимаю этот синтаксис : [Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime] .

Насколько я знаю, скобки предназначены для указания типов. Здесь в скобках содержится несколько строк.

Есть ли какое-либо объяснение этого синтаксиса?

Комментарии:

1. Если бы мне пришлось гадать, я думаю, это связано с атрибутами, поскольку вы можете указать несколько атрибутов в одной паре скобок.

Ответ №1:

Этот синтаксис используется для получения класса или типа UWP и, похоже, работает следующим образом:

 [class/type name, namespace, ContentType = WindowsRuntime]
  

Я не смог найти никакой документации, но эта ссылка на блог msdn дает некоторое объяснение:
Загрузка типов WinRT с помощью отражения в Windows 8

РЕДАКТИРОВАТЬ: цель [void] предшествующего вызова — просто ускорить вывод при возврате объекта:

 PS C:Usersme> [Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    PasswordVault                            System.Runtime.InteropServices.WindowsRuntime.RuntimeClass
  

Комментарии:

1. означает ли это, что указание типа с использованием его имени полного доменного имени в скобках загружает сборку? (является WinRT или нет)?

2. @SteveB Крайне маловероятно. PowerShell не выполняет автоматическую загрузку сборок.

3. @Remko, твой ответ проясняет объявление типа. Но я не понимаю цели аннулирования типа (приведение [void] перед типом)

4. @Remko, я не спрашиваю, что такое void , но какова цель помещения его перед типом. Или, точнее, какова цель помещения типа отдельно в скрипт

5. в данном конкретном случае просто убедиться, что создание экземпляра класса не дает никаких выходных данных