Как описано в моем вопросе Создание ISO образа с помощью PowerShell: как сохранить IStream в файл?, в PowerShell я создаю IStream
объект следующим образом:
$is = (New-Object -ComObject IMAPI2FS.MsftFileSystemImage).CreateResultImage().ImageStream
Этот объект имеет (PowerShell) тип System.__ComObject
. И каким-то образом PowerShell знает, что это IStream
:
PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IConnectionPoint]
False
PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IStream]
True
Однако приведение к этому типу не работает:
PS C:\> [System.Runtime.InteropServices.ComTypes.IStream] $is
Cannot convert the "System.__ComObject" value of type "System.__ComObject" to type "System.Runtime.InteropServices.ComT
ypes.IStream".
At line:1 char:54
+ [System.Runtime.InteropServices.ComTypes.IStream] $is <<<<
+ CategoryInfo : NotSpecified: (:) [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException
Как мне заставить это преобразование работать, не используя код C#?
Обновление: По-видимому, это преобразование невозможно заставить работать, как сказано в ответе x0n.
Теперь моя цель - передать этот IStream
COM объект в некоторый C# код (часть того же PowerShell скрипта с использованием Add-Type
), где он станет .NET объектом типа System.Runtime.InteropServices.ComTypes.IStream
. Возможно ли это? Если нет, то какие у меня есть альтернативы?