隐藏外部类,同时实现接口

问题描述 投票:0回答:1

我的基础结构项目中有一个WriterService

public class WriterService()
{
    private DbWriter _dbWriter;
    private IFileWriter _fileWriter;

    public WriterService(DbWriter dbWriter, IFileWriter fileWriter)
    {
        _dbWriter = dbWriter;
        _fileWriter = fileWriter;
    }

    public WriterSomething(string text, Stream image)
    {
        _dbWriter.Write(text);
        _fileWriter.Write(image) 
    }
}

如您所见,WriterService必须将一些文本写入DB,将某些图像写入文件系统。

public interface IFileWriter
{
    public void Write(string text)
    {
    }
}

现在我对文件系统编写器有不同的实现,可以将其写入本地磁盘驱动器或AWS云:

public DiskDriveWriter : IFileWriter
{
    public void Write(string text) {/* write something to Disk */}
}

public AWSCloudWriter : IFileWriter
{
    public void Write(string text) {/* write something to AWS */}
}

我想强制外界使用WriterService,我不希望他们能够直接使用AWSCloudWriterDiskDriveWriter ...这可能吗?

c# access-modifiers
1个回答
0
投票

[如果您将IFileWriter internal和将要使用您的接口的WriterService的构造函数也应该设为internal,则将起作用。

internal interface IFileWriter
internal WriterService(IFileWriter fileWriter)
© www.soinside.com 2019 - 2024. All rights reserved.