簡體   English   中英

沒有無參數構造函數的MVC控制器

[英]MVC Controller with no parameterless constructor

現在我正在學習MVC,但是遇到了一個我無法解決的問題。

在一個下載的測試項目中,我看到一些控制器沒有無參數構造函數,相反,它們具有許多參數的構造函數。 那怎么可能?

我的意思是,當有人訪問頁面時,必須首先創建一個控制器。 創建控制器的事物必須使用無參數構造函數來創建它。

我想這是我在MVC中缺少的東西。 :)

在沒有看到代碼的情況下,我首先想到的是其中涉及到一些依賴注入(即Ninject,Autofac等),它將依賴構造的對象(根據定義的規則)注入構造函數。 如果您不熟悉控制反轉和依賴注入的模式,那么這里有一個棧溢出問題,其中有一個非常清楚的解釋: 什么是控制反轉?

如果還有其他事情發生,那么也許您可以包括一些代碼,以便我們來看一下。

這稱為構造函數注入,它用作依賴項注入工具(如Ninject和StructureMap)的基礎。 它允許對象的松散耦合。

本質上,每當您必須使用new創建對象的實例時,您就將自己緊密地與該對象的具體實現聯系在一起。 如果不是不可能的話,這會使事情變得困難。

void MakeBacon()
{
    var smokey = new Bacon();
}

通過使用諸如構造器或依賴項注入之類的注入方法,由於我們不再需要創建新的實例,因此我們可以松散地耦合自身,而是將其注入。

void MakeBacon(IBacon smokey){
   // Make bacon here.
}

這是堆棧交換的一個很好的答案,解釋了構造函數注入

什么是構造函數注入?

這是有關構造函數注入的Microsoft文章

構造函數注入的注釋對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM