【问题标题】:How to cast from Stream to FileStream in C#如何在 C# 中从 Stream 转换为 FileStream
【发布时间】:2021-12-05 21:39:27
【问题描述】:

我有一个从 MailMerger 获得的 Stream 类型“outputStream”,我需要返回为 FileStream

我知道 FileStream 扩展了 Stream,但是有没有办法将内容传输到 Stream 或者转换类型?

关于如何更改类型的任何想法?

        static FileStream IMailMergeService(Dictionary<string, string> dataSource, Stream stream)
        {
            var (outputStream, errors) = new MailMerger().Merge(stream, dataSource);

            return (FileStream)outputStream;
        }

This is the MailMerger used

【问题讨论】:

  • C# 是强类型语言。您不能像在 python 或 javascript 中那样将 dog 转换为番茄,也不能将 Stream 转换为 FileStream。

标签: c# casting filestream outputstream mailmerge


【解决方案1】:

如果您在发生异常时返回look at the source Stream.Null 类型为NullStream。所以我要做的第一件事就是看看你得到的异常:

foreach (var inner in errors.InnerExceptions)
{
    // Print them out somewhere or look at the exceptions when debugging
    Console.WriteLine(inner.ToString());
}

关于您的错误信息:

NullStream 是派生自 Stream 的密封类。 FileStream 也派生自 Stream,但 FileStream 不是 NullStream,反之亦然。这就像说Dog 也是Cat,您不能在两者之间进行转换(尽管它们可能都派生自Animal 类)。

如果你不明白我在谈论类型时所说的“是一种关系”是什么意思,这些是面向对象编程的基础知识,所以我建议阅读它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多