我愚蠢地决定在周五的工作中尝试一些新的东西!
因此,我使用NuGet将Ninject.Web.Mvc 2.2.x.x添加到我的.Net MVC2项目中。
我修改了我的Global.asax.cs
using System.Web.Mvc;
using System.Web.Routing;
using IntegraRecipients;
using Mailer;
using Ninject;
using Ninject.Web.Mvc;
using Ninject.Modules;
namespace WebMailer
{
public class MvcApplication : NinjectHttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Mail", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new INinjectModule[] { new MailModule()});
}
internal class MailModule : NinjectModule
{
public override void Load()
{
Bind<IMailing>().To<Mailing>();
Bind<IMailingContext>().To<MailingContext>();
Bind<IRecipientContext>().To<RecipientContext>();
}
}
}}
我已经创建了一个控制器,如下所示。
using System.Linq;
using System.Web.Mvc;
using WebMailer.Models;
namespace WebMailer.Controllers
{
[ValidateInput(false)]
public class MailController : Controller
{
private readonly IMailingContext _mailContext;
private readonly IRecipientContext _integraContext;
public MailController(IMailingContext mail,IRecipientContext integra)
{
_mailContext = mail;
_integraContext = integra;
}
public ActionResult Index()
{
return View(_mailContext.GetAllMailings().Select(mailing => new MailingViewModel(mailing)).ToList());
}
}
}但是控制者仍然坚持认为
找不到类型或命名空间名称“IRecipientContext”(是否缺少using指令或程序集引用?)
和
找不到类型或命名空间名称“IMailingContext”(是否缺少using指令或程序集引用?)
我的google-fu失败了,我真的希望这只是一个愚蠢的拼写错误/漏行的事情
提前感谢
P
发布于 2011-03-26 01:13:30
Ninject不会改变程序集的编译方式!它不会神奇地添加对其他程序集的引用或使用指令添加。如果使用来自其他程序集的接口,则必须添加一个using指令和一个对此程序集的引用。
所要做的就是在运行时将你的应用程序连接起来。
发布于 2011-04-06 23:38:55
我也遇到了类似的问题。
我有一个简单的WPF窗口项目,其中链接了编译后的Ninject.dll。然而,下面的代码给了我错误...
using Ninject;
namespace CatalogueManager
{
public class ServiceLocator
{
public IMainWindowViewModel GetMainWindowViewModel()
{
return Kernel.Get<IMainWindowViewModel>();
}
static IKernel Kernel;
static ServiceLocator()
{
Kernel = new StandardKernel(new NinjectConfiguration());
}
}
}尤其是,"Ninject“名称空间和IKernel会提示编译时消息”类型或名称空间'X‘未找到...“
https://stackoverflow.com/questions/5435371
复制相似问题