我正在编写一个创建文件目录的应用程序。目前,目录信息存储在一个 XML 文件中,但我正在尝试将接口(interface)抽象为一个目录,以允许其他 future 的存储机制,例如单个 ZIP 文件、SQL 服务器或 HTTP 服务器。因此,抽象目录类不是返回文件路径,而是将文件作为字节流返回。因此允许文件的来源是磁盘,也允许来自数据库或网络服务器的文件。看我之前的related question .
然而,根Stream类包括具有不同功能的流。有些流只能读取,有些只能写入。还有一些流支持搜索,而其他流则不支持。
有没有通过属性或方法来限制流返回的能力?例如,我的 Catalog 类看起来像这样。
public abstract class Catalog
{
...
public abstract Stream File
{
get;
}
...
}
有什么方法可以确保 File
总是返回支持查找的可读流吗?
最佳答案
那么,您可以检查流的CanRead
、CanWrite
和CanSeek
属性。
不过我不确定我是否正确理解了您的问题...您到底想做什么?
某些流永远无法搜索(例如 NetworkStream
、GZipStream
...),因此如果您正在处理这些类型的流,则没有办法迫使他们寻求。
如果您只想限制流的功能(例如,防止写入通常可写的流),您可以创建一个包装器,将其实现委托(delegate)给底层流,但抛出“禁用”异常"方法。
关于c# - 是否可以在 Stream 参数中限制/要求某些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269807/