Sco*_*son 6 c# extension-methods language-features
我确定答案是显而易见的,我有点不好意思我已经不知道答案,但考虑一下我在阅读"Professional ASP.NET MVC 1.0"时选择的以下代码示例:
public static class ControllerHelpers
{
public static void AddRuleViolations(this ModelStateDictionary modelState, IEnumerable<RuleViolation> errors)
{
foreach (RuleViolation issue in errors)
modelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
}
Run Code Online (Sandbox Code Playgroud)
我理解这个静态方法正在做什么,但我不明白的是"this"这个词在方法签名中的用途是什么.任何人都可以开导我吗?
tan*_*ius 17
这是一个名为扩展方法的新C#3.0功能.
这意味着,您向ModelStateDictionary对象添加了一个新方法.您可以像普通方法一样调用它:
yourModelStateDictionary.AddRuleViolations( errors );
Run Code Online (Sandbox Code Playgroud)
请注意,跳过第一个参数('this'参数).它仅将ModelStateDictionary指定为扩展方法的有效目标.
线索是,您可以使用任何类 - 甚至密封或第三方类,如.Net框架类(例如对象或字符串).