【问题标题】:Unable to access GZipStrean due to protection level由于保护级别,无法访问 GZipStrean
【发布时间】:2015-12-16 14:36:38
【问题描述】:

我只想访问 System.IO.Compression.GZipStream 类来解压 Web Http 响应。但由于保护级别,我无法访问 GZipStream 类。我正在使用 Mvvm cross 进行移动开发。

  • 这是 GZipStream 类代码:

    命名空间 System.IO.Compression

{

internal class GZipStream : Stream

{
    public GZipStream(Stream stream, CompressionMode mode);
    public GZipStream(Stream stream, CompressionMode mode, bool leaveOpen);

} }

  • 我需要访问第一个构造函数来创建 GZipStream 的实例。
  • 那么还有其他方法可以创建 GZipStream 类型的实例吗?

【问题讨论】:

  • 什么意思,你不能访问GzipStream的公共构造函数?您能否提供有关您的问题的更多详细信息?
  • 是的@Max,我想使用 GZipStream 类的公共构造函数

标签: c# gzipstream


【解决方案1】:

在 Xamarin Forms for PCL 中,我解决了这个问题,只是在 your_project_name .csproj

中替换了 TargetFrameworkProfile

来自:

个人资料259

收件人:

个人资料111

也可以尝试安装 NuGet 包 Microsoft.Bcl.Compression,这个选项虽然解决了访问 GZipStream 的问题,但在编译时我遇到了 System.TypeLoadException。

【讨论】:

  • 我能知道 Profile111 是什么意思吗?它和 Profile259 有什么不同?有影响吗?
  • Profile111 与 .NET Standard 1.1 和 PCL 兼容:.NET Framework 4.5、Windows 8、Windows Phone 8.1 Profile259 - .NET Standard 1.0 和 PCL:.NET Framework 4.5、Windows 8、Windows Phone 8.1 , Windows Phone Silverlight 8 还有更多:docs.microsoft.com/ru-ru/dotnet/standard/net-standard
【解决方案2】:

您可以像这样轻松压缩 byte[] 缓冲区数组

        using (var ms = new MemoryStream())
        {
            using (var gzip = new GZipStream(ms, CompressionMode.Compress))
            {
                gzip.Write(buffer, 0, buffer.Length);
                gzip.Close();
            }

            compressed = ms.ToArray();
        }

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2011-04-02
    相关资源
    最近更新 更多