代码之家  ›  专栏  ›  技术社区  ›  Gavin

关于nerddinner控制器构造函数的问题

c#
  •  1
  • Gavin  · 技术社区  · 16 年前

    我一直在研究书呆子晚餐应用程序,更具体地说,它是如何处理单元测试的。

    rsvpcontroller的以下构造函数使我的

    public RSVPController()
        : this(new DinnerRepository()) {
    }
    
    public RSVPController(IDinnerRepository repository) {
        dinnerRepository = repository;
    }
    

    据我所知,第二个是由单元测试使用的,因此它可以使用假存储库。我搞不懂的是第一个构造器是怎么做的。它似乎从来没有设置过dinterrepository变量,它似乎意味着它继承了某些东西,但我真的不明白。

    有人能解释吗?

    谢谢

    2 回复  |  直到 16 年前
        1
  •  3
  •   Thomas    16 年前

    第一个构造函数传递“default” IDinnerRepository 实施(即 DinnerRepository )到第二个构造器。

    这样做是因为mvc控制器工厂使用了空构造函数。换句话说,当应用程序实际执行时,它将第一个构造函数与默认的存储库实现一起使用。当单元测试想要测试控制器时,则 肾上腺素库 可以传递给控制器。

        2
  •  0
  •   SwDevMan81    16 年前

    第一个构造函数使用新的dinnerrepository调用第二个构造函数。这就是为什么:

    : this(new DinnerRepository())
    

    它调用第二个构造函数,并为dinnerrepository变量分配dinnerrepository的新实例。