StructureMap项目地址:http://structuremap.sourceforge.net/Default.htm
我以webform为例,简单介绍一下如何在项目中使用StructureMap:
1.在Global.asax中的Application_Start事件中添加如下代码,主要用于初始化StructureMap的容器
ObjectFactory.Initialize( x => { x.IgnoreStructureMapConfig = true; x.For<Ants.Provider.IAuthenticateProvider>().Singleton().Use<Ants.Provider.SessionAuthenticateProvider>(); x.For<Ants.Provider.ICacheProvider>().Singleton().Use(p => Ants.Provider.CacheFactory.Instance()); } ); ------------------------------------------------------- public static void BootstrapStructureMap() { // Initialize ObjectFactory.Initialize(x => { x.For<Inter.IFormsAuthenticationService1>().Use<Inter.FormsAuthenticationService1>() //.Ctor<string>("catalogConnectionString").Is(ConfigurationManager.ConnectionStrings["CurrentWeb_AdminConnectionString"].ConnectionString) //.Ctor<string>("contentConnectionString").Is(ConfigurationManager.ConnectionStrings["CurrentWeb_AdminConnectionString"].ConnectionString) //.Ctor<string>("webCatalogConnectionString").Is(ConfigurationManager.ConnectionStrings["CurrentWeb_WebConnectionString"].ConnectionString) //.Ctor<string>("dlinkPromotionAdminConnectionString").Is(ConfigurationManager.ConnectionStrings["CurrentWeb_AdminConnectionString"].ConnectionString) ; }); }
2.如何使用
StructureMap.ObjectFactory.GetInstance<Ants.Provider.IAuthenticateProvider>() --------------------------------------------------- Inter.IFormsAuthenticationService1 FormsService1 = ObjectFactory.GetInstance<Inter.IFormsAuthenticationService1>();