有点学习曲线。知道你们其中一位大师可以帮助我。
我正在研究SubSonic(SimpleRepository)和StructureMap。真的试着绕过他们两个。
我想使用SimpleRepository以方便使用,让我的模型定义数据库,而不是最初启动或创建数据库结构。
我创建了一个继承自SimpleRepository
的具体类public class DataRepository : SimpleRepository
{
public DataRepository() :
base("Application", SimpleRepositoryOptions.RunMigrations)
{ }
}
将此添加到我的应用程序初始化
ObjectFactory.Initialize(
x => x.ForRequestedType<DataRepository>()
.TheDefaultIsConcreteType<DataRepository>()
.CacheBy(InstanceScope.Hybrid));
现在我确信应用程序中的任何地方都使用相同的SimpleRepository。
我是否太复杂了?或者我在这里走在正确的轨道上。我知道你不知道所有其他的细节,所以在一般情况下跟我说话。感谢。
答案 0 :(得分:1)
我认为你错过了DI的核心思想之一。这个想法是使用接口从实际实现功能的具体类中抽象出调用代码。
public interface IDataRepository { }
internal class DataRepository : SimpleRepository, IDataRepository
{
}
ObjectFactory.Initialize(
x => x.ForRequestedType<IDataRepository>()
.TheDefaultIsConcreteType<DataRepository>()
.CacheBy(InstanceScope.Hybrid));
现在所有客户端代码都应该只解析/引用IDataRepository接口。