我正在使用演示MVC 3 Internet应用程序模板,我安装了ServiceStack.Host.Mvc NuGet包。我遇到Funq执行构造函数注入的问题。
以下代码段工作正常:
public class HomeController : ServiceStackController
{
public ICacheClient CacheClient { get; set; }
public ActionResult Index()
{
if(CacheClient == null)
{
throw new MissingFieldException("ICacheClient");
}
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
以下引发错误
无法创建界面实例。
public class HomeController : ServiceStackController
{
private ICacheClient CacheClient { get; set; }
public ActionResult Index(ICacheClient notWorking)
{
// Get an error message...
if (notWorking == null)
{
throw new MissingFieldException("ICacheClient");
}
CacheClient = notWorking;
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
自从公共财产注入工作以来,这并不是什么大不了的事,但我想知道我错过了什么。
答案 0 :(得分:1)
请注意,在您的第二个示例中,您没有构造函数,但您确实拥有方法:
public ActionResult Index(ICacheClient notWorking)
{
....
}
仅注入构造函数和公共属性。 您可以将其更改为:
public class HomeController : ServiceStackController
{
private ICacheClient CacheClient { get; set; }
public HomeController(ICacheClient whichWillWork)
{
CacheClient = whichWillWork;
}
...
}