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