gpt4 book ai didi

c# - 是否可以在 Stream 参数中限制/要求某些功能?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:25 24 4
gpt4 key购买 nike

我正在编写一个创建文件目录的应用程序。目前,目录信息存储在一个 XML 文件中,但我正在尝试将接口(interface)抽象为一个目录,以允许其他 future 的存储机制,例如单个 ZIP 文件、SQL 服务器或 HTTP 服务器。因此,抽象目录类不是返回文件路径,而是将文件作为字节流返回。因此允许文件的来源是磁盘,也允许来自数据库或网络服务器的文件。看我之前的related question .

然而,根Stream类包括具有不同功能的流。有些流只能读取,有些只能写入。还有一些流支持搜索,而其他流则不支持。

有没有通过属性或方法来限制流返回的能力?例如,我的 Catalog 类看起来像这样。

public abstract class Catalog
{
...
public abstract Stream File
{
get;
}
...
}

有什么方法可以确保 File 总是返回支持查找的可读流吗?

最佳答案

那么,您可以检查流的CanReadCanWriteCanSeek 属性。

不过我不确定我是否正确理解了您的问题...您到底想做什么?

某些流永远无法搜索(例如 NetworkStreamGZipStream...),因此如果您正在处理这些类型的流,则没有办法迫使他们寻求。

如果您只想限制流的功能(例如,防止写入通常可写的流),您可以创建一个包装器,将其实现委托(delegate)给底层流,但抛出“禁用”异常"方法。

关于c# - 是否可以在 Stream 参数中限制/要求某些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com