0
如果我想聲明我的動作方法是靜態的,我可以擁有它嗎?如果是,那麼如何做到這一點,它有什麼用途?如果沒有使用,那麼爲什麼MVC允許它定義? 例如MVC的動作方法可以是靜態的還是擴展的方法?
public static ActionResult Index()
{
//Is it possible?
return View();
}
如果這是可能的有人可以告訴我一個擴展方法的例子嗎?
如果我想聲明我的動作方法是靜態的,我可以擁有它嗎?如果是,那麼如何做到這一點,它有什麼用途?如果沒有使用,那麼爲什麼MVC允許它定義? 例如MVC的動作方法可以是靜態的還是擴展的方法?
public static ActionResult Index()
{
//Is it possible?
return View();
}
如果這是可能的有人可以告訴我一個擴展方法的例子嗎?
MVC不允許定義它,C#會。僅僅因爲編程語言中有一些構造是可能的,並不意味着你的框架將支持它。還有很多其他的東西可以用C#編寫,但哪些MVC會忽略或抱怨。
因此,不,沒有靜態行爲。沒有擴展方法。擴展方法只是一種語法糖;這是C#編譯器的一個手段。在編譯代碼時,擴展方法與其他任何靜態方法沒有區別。對它們的調用被轉換爲簡單的靜態方法調用。換句話說,即使你這樣寫:
myObject.extensionMethod(42);
它會被編譯到這一點:
ExtensionClass.extensionMethod(myObject, 42);
所以的時候你的應用程序運行和MVC框架踢,所有的信息有關的任何擴展方法丟失了。 MVC無法支持「擴展方法操作」,即使它想要,因爲它無法確定哪個擴展方法適用於哪個控制器類。
背後是什麼原因? – walther
我已經添加了另一個查詢以及...它不回答如此創建不同的問題 – Imgane5h
@walther有人問我同樣的問題,我很困惑,所以想到這裏分享 – Imgane5h