【发布时间】:2020-05-28 03:26:20
【问题描述】:
我在用 C# 编写基本依赖注入时遇到问题,
为了解决问题,我有一个接口 IStorage,其中包含 IObject GetObject(int objID)。
然后我有两个窗体:
- frmMain
- frm搜索
frmMain 包含以下代码:
private readonly IStorage newStorage;
public frmMain()
{
newStorage = new Storage();
}
frmSearch 包含以下代码:
public frmSearch(IStorage newStorage)
{
}
但是我收到了错误:
可访问性不一致:参数类型“Application.IStorage”的可访问性低于方法“Application.frmSearch.frmSearch(IStorage)”
解决这个问题的方法是公开我的接口,但这迫使我也公开对象类。我对 OOP 还很陌生,将我的所有类和接口公开(我肯定是错的)感觉像是一种糟糕的编码实践,所以我不太确定在这里做什么。
任何帮助将不胜感激。 :)
【问题讨论】:
-
我认为将
IStorage标记为公共接口并不是一个坏主意。 -
我的问题是,我必须将任何 IStorage 方法中引用的所有类也公开,这还可以吗?
-
相关代码(
interface IStorage)未贴出。 -
所有 IStorage 包含的是 IObject GetObject(int ObjID)
-
所以也要公开
IObject。拥有一些私有实现是可以理解的,但我不认为拥有公共接口有什么害处。