首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell GzipStream,“无法找到"GZipStream”的重载,参数计数为"2“

Powershell GzipStream,“无法找到"GZipStream”的重载,参数计数为"2“
EN

Stack Overflow用户
提问于 2019-08-30 16:31:55
回答 1查看 831关注 0票数 0

试着让GzipStream穿时髦的衣服。拥有这个:

代码语言:javascript
复制
[System.IO.MemoryStream] $output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream $output, ([IO.Compression.CompressionMode]::Optimal)

获取新对象调用的错误:

新对象:找不到"GZipStream“的重载,参数计数为"2”。

但是该类的文档显示了两个接受两个参数的构造函数。

GZipStream构造函数

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 19:08:06

“优化”是CompressionLevel枚举的成员,而不是CompressionMode枚举,因此您的代码应该是:

代码语言:javascript
复制
[System.IO.MemoryStream] $output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream($output, [IO.Compression.CompressionLevel]::Optimal)

在您的特殊情况下,PowerShell试图提供帮助,并将不存在的enum成员名转换为$null

代码语言:javascript
复制
PS> $null -eq [IO.Compression.CompressionMode]::Optimal
True

PS> $null -eq [IO.Compression.CompressionMode]::NonExistentMember
True

因此,您的原始代码相当于:

代码语言:javascript
复制
[System.IO.MemoryStream] $output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream $output, $null

这给了你和你一样的例外。错误并不在于找不到包含两个参数的构造函数重载,更重要的是它找到了多个合适的重载,无法选择使用哪一个(参见GZipStream构造函数中的前两个构造函数)。

还请注意,我必须将构造函数参数封装在圆括号中--这将改变PowerShell以某种方式解析调用哪个构造函数的方式。我不确定确切的细节,但使用圆括号可以让它工作!

代码语言:javascript
复制
[System.IO.MemoryStream] $output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream($output, [IO.Compression.CompressionLevel]::Optimal)

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57730345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档