Jos*_*eld 1 c# asp.net extension-methods
我已经向ASP.NET System.Web.UI.Page添加了一个扩展方法.我的应用程序中的每个页面都继承自此类.
但是,我不能只访问扩展方法.我必须打字this.MyMethod();而不是只能使用MyMethod().我认为方法/属性this本身就属于默认范围.我不明白的是什么?或者这是扩展方法的细微差别?
我认为这个方法/属性本身就属于默认范围.
他们是.但是扩展方法是没有方法this在默认的范围; 它们是通过语法糖提供的静态方法,由编译器提供.
我相信你已经知道了这一点,但只是为了澄清:if ExtensionMethod是你当前所在范围的类的扩展方法,输入:
this.ExtensionMethod();
Run Code Online (Sandbox Code Playgroud)
...是相同的:
SomeStaticClass.ExtensionMethod(this);
Run Code Online (Sandbox Code Playgroud)
this需要作为参数传递给ExtensionMethod.上面的第一种方法,编译器只是为你做这件事.
当然,它们可以以不同的方式实现,以便编译器将扩展方法以及类成员"引入"默认范围; 他们只是选择不这样做.就个人而言,我喜欢这样; 但我想这是一个主观问题.无论如何,如果你不喜欢打字this,这只是一个小烦恼,对吗?
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |