我刚开始使用Ninject和MVC3,所以这是我的问题:
– 我从Nuget安装了Ninject 2.2.1.4和Ninject.MVC3 2.2.2.0
– 在我的WebUI(MVC3项目)中:
– 我从Nuget安装了Ninject 2.2.1.4和Ninject.MVC3 2.2.2.0
– 在我的WebUI(MVC3项目)中:
的Global.asax.cs
public class MvcApplication : NinjectHttpApplication { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "home",action = "index",id = UrlParameter.Optional } // Parameter defaults ); } protected override void OnApplicationStarted() { base.OnApplicationStarted(); AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } protected override IKernel CreateKernel() { var kernel = new StandardKernel(); kernel.Load(Assembly.GetExecutingAssembly()); return kernel; } }
>在我的域(类项目)中,我有我的LinQ to sql datacontext,我想从我的WebUI中的Web.Config加载带有连接字符串的上下文,所以我必须传递构造函数参数,我也有一些服务在我的域项目中
public class LotteryDataService { LinQ.WebDataContext _context; public LotteryDataService(LinQ.WebDataContext context) { _context = context; } public IEnumerable<LinQ.LotteryData> Get() { return _context.LotteryDatas.Take(10); } }
如何将datacontext与Ninject绑定到构造函数参数(这里是连接字符串)?
解决方法
这是传递构造函数参数的方法. Ninject将解析与指定的构造函数参数匹配的构造函数.
public class DataModule : NinjectModule { public override void Load() { string connectionString = "..."; Bind<WebDataContext>().ToSelf() .WithConstructorArgument("connection",connectionString); } }
.WithConstructorArgument()的第一个参数应该是构造函数参数的名称.这是基类中的fileOrServerOrConnection,但是派生类中的连接.