对Global.asax中的方法使用依赖注入

时间:2012-12-22 07:51:34

标签: asp.net-mvc asp.net-mvc-3 dependency-injection structuremap

使用DI容器和使用StructureMap创建了一个ASP.Net MVC3应用程序。 一切都在控制器方法中工作。但是我怎样才能使用global.asax方法?

这里我设置依赖项解析器,global.ascx的Application_Start

    protected void Application_Start()
    {
    DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
    LoadApplicationMetaData(?,?,?);
    }

      private void LoadApplicationMetaData(IMetaDataService metaService, ITenantService tenantService, ICacheStorage store)
    {
        store.Add("TenantMeta", tenantService.GetAllTenants());

    }

    public class TenantService : ITenantService
    {
    private readonly ITenantRepository TenantRepsitory;

    public TenantService(ITenantRepository _tenantRepository)
    {
        TenantRepsitory = _tenantRepository;
    }
    }

在下面这一行中,我如何松散耦合方法调用。

  **LoadApplicationMetaData(?,?,?); what should be passed** 

注意:TenantService类需要ITenantRepository

1 个答案:

答案 0 :(得分:1)

DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));

你明确地引用了StructureMap容器​​(你的变量container),所以只需要调用container.GetInstance<IMetaDataService>()等。