首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ServiceStack MVC Powerpack + Funq注入构造函数

用ServiceStack MVC Powerpack + Funq注入构造函数
EN

Stack Overflow用户
提问于 2012-09-14 20:04:25
回答 1查看 721关注 0票数 3

我正在玩示范MVC 3互联网应用模板,我安装了ServiceStack.Host.Mvc NuGet软件包。我对Funq执行构造函数注入有问题。

以下代码片段运行良好:

代码语言:javascript
复制
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();
    }
}

以下抛出错误

无法创建接口的实例。

代码语言:javascript
复制
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();
    }
}

这不是什么大交易,因为公共财产注入工作,但我想知道我错过了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-15 01:10:50

注意:在第二个示例中,您没有构造函数,但是有方法

代码语言:javascript
复制
public ActionResult Index(ICacheClient notWorking)
{
    ....
}

它不能工作,只会注入构造函数和公共属性。您可以将其改为:

代码语言:javascript
复制
public class HomeController : ServiceStackController
{
    private ICacheClient CacheClient { get; set; }

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

    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12431249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档