mvc4 报错:扩展方法必须在非泛型静态类中定义public class DisplayDescriptionExtensions { public static MvcHtmlString DisplayDescription(this HtmlHelper htmlHelper,string name) { ModelMetadata _modelMetadata = ModelMetadata.FromStringExpression(name, htmlHelper.ViewData); return MvcHtmlString.Create(_modelMetad...
扩展方法是一种特殊的静态方法,它允许你为现有的类型添加新的方法,而无需创建新的派生类型或修改原始类型的定义。扩展方法通过在其第一个参数前加上this关键字来指定其扩展的类型。 2. 解释为什么扩展方法需要在非泛型静态类中定义 扩展方法必须定义在一个非泛型的静态类中,这是C#语言的设计要求。具体原因如下: 静...
在非泛型静态类中定义扩展方法是指在一个非泛型的静态类中定义一个扩展方法。扩展方法是一种特殊的静态方法,它允许我们向现有的类型添加新的方法,而无需修改原始类型的定义。 扩展方法的定义需要满足以下几个条件: 扩展方法必须定义在一个静态类中。 扩展方法必须是静态的。 扩展方法的第一个参数必须是要扩展的...
可以使用扩展方法来扩展类或接口,但不能重写扩展方法。与接口或类方法具有相同名称和签名的扩展方法永远不会被调用。编译时,扩展方法的优先级总是比类型本身中定义的实例方法低。换句话说,如果某个类型具有一个名为Process(int i) 的方法,而你有一个具有相同签名的扩展方法,则编译器总是绑定到该实例方法。当编译...
1 第一个参数是要扩展或者要操作的类型,这称为"被扩展的类型" 2 为了指定扩展方法,要在被扩展的类型名称前面附加this修饰符 3 要将方法作为一个扩展方法来访问,要用using指令导入扩展类型的命名空间,或者使扩展类型和调用代码在同一个命名空间中. //扩展方法必须在非泛型静态类中定义 ...
使其成为一个正常的静态方法。如果您是故意这样做的,请将方法声明移动到静态的非泛型非嵌套类。
在上面的这段代码中在编译时会出现“扩展方法必须在非泛型静态类中定义”,出现错误的原因就在于 public class CustomerHelperClass 1. 扩展方法所在的这个类为非静态的,只需将扩展方法所在的类定义成静态类即可,修改如下: public static class CustomerHelperClass ...
扩展方法的类型是需要静态类的 public static class DisplayDescriptionExtensions
方法必须在非泛型静态类中定义: public class CustomerHelperClass { public static MvcHtmlString 今天看书,学习到了泛型类,泛型方法及泛型委托,做一个简单的总结,仅涉及泛型类,泛型方法及泛型委托的定义方法。1.泛型类泛型类的定义与普通类的定义类似,只是增加了泛型类型()的声明。泛型类型可以作为类中成员变量的...
这里涉及一个知识点,就是C#的扩展方法。 比较显著的标识就是方法参数类型定义时使用this。 包含扩展方法的类及方法本身必须是静态的,否则就会报上述错误 如 // 报错CS1106 public class ExtensionHelper { public void SelectAll(this s