使用ServiceStack MVC Powerpack + Funq进行构造函数注入

时间:2012-09-14 20:04:26

标签: asp.net-mvc servicestack funq

我正在使用演示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();
    }
}

自从公共财产注入工作以来,这并不是什么大不了的事,但我想知道我错过了什么。

1 个答案:

答案 0 :(得分:1)

请注意,在您的第二个示例中,您没有构造函数,但您确实拥有方法

public ActionResult Index(ICacheClient notWorking)
{
    ....
}

仅注入构造函数和公共属性。 您可以将其更改为:

public class HomeController : ServiceStackController
{
    private ICacheClient CacheClient { get; set; }

    public HomeController(ICacheClient whichWillWork)
    {
       CacheClient = whichWillWork;
    }

    ...
}