根据另一个线程与@Aaronaught的对话,我开始将我的应用程序转换为使用依赖注入和存储库模式,但我有点卡住了。我想我得到了模式的大部分内容和流程,但我坚持将StructMap实现到ASP.NET MVC 2.我读过的例子似乎已经过时了,我最新版本的Structure Map是我的使用(2.6.1)。
我希望有人可以根据我粘贴的代码填补空白:
public static class Bootstrapper {
public static void Configure() {
ObjectFactory.Configure(x => {
x.For<DataContext>().Add(new DataContext());
});
}
}
有了这个,我可以从我的控制器中获得一个DataContext实例:
protected DataContext dc = ObjectFactory.GetInstance<DataContext>();
我知道做错了,但我对如何避免它感到困惑。继续,这是控制器工厂:
public class StructureMapControllerFactory : DefaultControllerFactory {
protected override IController GetControllerInstance(
RequestContext rc,
Type ct) {
return (ObjectFactory.GetInstance(ct) as Controller);
}
}
我并不完全明白这是做什么的,但它在示例中,所以我正在复制它。有人可以向我解释一下吗?
现在根据我的理解,应该有注册表,如果我理解正确,全局化对象实例,如DataContext。那是对的吗?如果是这样,我该如何为StructureMap 2.6.1编写注册表?我看到的示例代码似乎已经过时,因为当我编写它时,我没有相同的选项(通过IntelliSense),所以我不确定如何编写它...
我真的很感激任何帮助填补我的空白。
P.S。我对依赖注入和存储库的经验总共大约8小时。
UPDATE /结论
在下面阅读了@ Pure的优秀解释,并观看了他在子评论中引用的tekpub视频,我选择了Ninject而不是StructureMap。
我不知道Ninject是否比StructureMap更好,但从我的观点来看,开始并开始行动肯定要容易得多。
答案 0 :(得分:10)