我有一部分这样的代码

        Assembly myAssembly = Assembly.GetExecutingAssembly();
        string[] names = myAssembly.GetManifestResourceNames();
        foreach (string file in names)
        {
            if (file.EndsWith(".dtd"))
            {
                // attach to stream to the resource in the manifest
                  dtdStream = myAssembly.GetManifestResourceStream(file);
                  MessageBox.Show(dtdStream.ToString());
            }
        }


我的Resources文件夹下有所有dtd文件。其构建类型为Embedded Resource。
现在,当我调试代码时,我得到一个显示System.IO.UnmanagedMemoryStream的消息框

但是我想要一个Managed MemoryStream吗?
我的代码有什么问题?
谢谢...

最佳答案

资源作为程序集(EXE或DLL)的一部分进行编译,这意味着当OS启动进程时,资源将被加载到非托管内存中。这就是为什么GetManifestResourceStream返回的任何流都必须不受管理(类型为UnmanagedMemoryStream)的原因。

到底有什么问题? MemoryStreamUnmanagedMemoryStream的界面基本相同,只是(隐藏的)功能有所不同,这对您没有任何影响。

10-08 13:32