StructureMap 2.6.1和ASP.NET MVC 2问题(来自DI的完整初学者)

时间:2010-11-11 02:07:04

标签: asp.net-mvc dependency-injection structuremap repository-pattern

根据另一个线程与@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更好,但从我的观点来看,开始并开始行动肯定要容易得多。

1 个答案:

答案 0 :(得分:10)