首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Autofac -哪个版本用于ASP.NET MVC 1和示例?

Autofac -哪个版本用于ASP.NET MVC 1和示例?
EN

Stack Overflow用户
提问于 2011-05-12 23:49:52
回答 3查看 596关注 0票数 1

我应该为ASP.NET MVC1.0使用哪个Autofac版本。另外,有哪些示例可以通过存储库模式将其与ASP.NET MVC一起使用?

代码语言:javascript
运行
复制
public class MyController : BaseController
{
    private readonly IUser _user;
    private readonly ICompany _company;

    public MyController(IUser user, ICompany company)
    {
        _user = user;
        _company = company;
    }

    public ActionResult Index()
    {
        // Actions
    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2011-05-13 02:42:25

我决定在我的应用程序中使用StructureMap。下面是我为实现它所做的工作:

创建我自己的CustomFactory类:

代码语言:javascript
运行
复制
public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(Type controllerType)
    {
        if (controllerType == null)
        {
            return base.GetControllerInstance(controllerType);
        }

        try
        {
            return ObjectFactory.GetInstance(controllerType) as Controller;
        }
        catch (StructureMapException ex)
        {
            throw;
        }
    }
}

创建一个Bootstrapper,使用StructureMap约定为我的程序集注册所有接口及其实现。(我在上面发布了一个blog post ):

代码语言:javascript
运行
复制
public class StructureMapBootstrapper : IBootstrapper
{
    private static bool hasStarted;

    public void BootstrapStructureMap()
    {
        ObjectFactory.Initialize(x =>
        {
            x.AddRegistry<FactoryRegistry>();
        });
    }

    public static void Restart()
    {
        if (hasStarted)
        {
            ObjectFactory.ResetDefaults();
        }
        else
        {
            Bootstrap();
            hasStarted = true;
        }
    }

    public static void Bootstrap()
    {
        new StructureMapBootstrapper().BootstrapStructureMap();
    }
}

public class FactoryRegistry : Registry
{
    public FactoryRegistry()
    {
        Scan(s =>
        {
            s.Assembly("Calendar.Library");
            s.TheCallingAssembly();
            s.AddAllTypesOf<IController>().NameBy(type => type.Name.Replace("Controller", "").ToLower());
            s.WithDefaultConventions();
        });
    }
}

在Global.asax.cs中注册StructureMap:

代码语言:javascript
运行
复制
protected void Application_Start()
{
    StructureMapBootstrapper.Bootstrap();
    ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5980759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档