【发布时间】:2012-03-20 03:06:12
【问题描述】:
我有一个用作数据模型的类。我会这样简化:
public class DataModel
{
public bool IsDataModelActive {get; internal set;}
}
因此,使用我的 DLL 的程序员只会看到他们需要的东西,而不会冒险破坏任何东西。
另一方面,我想在使用 DataModel 的课程中使用 DI。所以我必须创建一个接口:
public interface IDataModel
{
bool IsDataModelActive {get;}
}
所以我在课堂上注入了这个:
public class Class1
{
IDataModel dataModel;
public Class1(IDataModel dataModel)
{
this.dataModel = dataModel
}
}
在这种情况下,我无法访问 dataModel.IsDataModelActive 的设置器。
我发现最好的补丁是在接受注射后施放:
public class Class1
{
DataModel dataModel;
public Class1(IDataModel dataModel)
{
this.dataModel = (DataModel)dataModel
}
}
这有助于单元测试,但它打破了 DI 的整个概念。如果我有另一个实现IDataModel 的类怎么办?
你/你会使用什么策略?
【问题讨论】:
标签: c# interface dependency-injection