2015-11-03 68 views
0

如果我想聲明我的動作方法是靜態的,我可以擁有它嗎?如果是,那麼如何做到這一點,它有什麼用途?如果沒有使用,那麼爲什麼MVC允許它定義? 例如MVC的動作方法可以是靜態的還是擴展的方法?

public static ActionResult Index() 
{ 
    //Is it possible? 
    return View(); 
} 

如果這是可能的有人可以告訴我一個擴展方法的例子嗎?

+1

背後是什麼原因? – walther

+0

我已經添加了另一個查詢以及...它不回答如此創建不同的問題 – Imgane5h

+0

@walther有人問我同樣的問題,我很困惑,所以想到這裏分享 – Imgane5h

回答

3

MVC不允許定義它,C#會。僅僅因爲編程語言中有一些構造是可能的,並不意味着你的框架將支持它。還有很多其他的東西可以用C#編寫,但哪些MVC會忽略或抱怨。

因此,不,沒有靜態行爲。沒有擴展方法。擴展方法只是一種語法糖;這是C#編譯器的一個手段。在編譯代碼時,擴展方法與其他任何靜態方法沒有區別。對它們的調用被轉換爲簡單的靜態方法調用。換句話說,即使你這樣寫:

myObject.extensionMethod(42); 

它會被編譯到這一點:

ExtensionClass.extensionMethod(myObject, 42); 

所以的時候你的應用程序運行和MVC框架踢,所有的信息有關的任何擴展方法丟失了。 MVC無法支持「擴展方法操作」,即使它想要,因爲它無法確定哪個擴展方法適用於哪個控制器類。

相關問題