2012-08-16 13 views
-2

我正在寻找关于这个结构的信息,但是我找不到它;所以如果有人有时间来解释这个问题,或者指向某个URL,那么它会被解释。这个c#定义的解释:function_name(这个class_name namevar)

我发现在函数sin网C#应用该定义,例如:

public static class PrincipalExtensions 
{ 
    public static Site.Web.Models.SiteIdentity SiteIdentity(this System.Security.Principal.IPrincipal principal) 
    { 
     ..... 
     } 

} 
+5

[扩展方法](http://msdn.microsoft.com/zh-cn/library/bb383977.aspx)。 – Oded 2012-08-16 13:54:58

回答

6

这是一个扩展方法。有关详细信息,请参阅以下文章:http://msdn.microsoft.com/en-us/library/bb383977.aspx

简短版本:此构造使您可以在类实例上调用某些方法,即使您无法(或不想)从该类继承。它不会让您访问受保护或私有成员/字段/方法。

最值得注意的用法:System.Linq命名空间中的IEnumerable/IQueryable的扩展方法。

+0

另外他的问题与ASP有很大关系,因此“Site.Web.Models.SiteIdentity” – tcables 2012-08-16 13:56:44

+1

值得注意的是,它实际上并没有将方法添加到类中,它只是提供了使其看起来像是方法被添加到课堂上。该方法本身只是一个静态方法,即使它是一个扩展方法。 (虽然这看起来没有意义,但确实很重要。) – Servy 2012-08-16 13:58:26

+0

编辑 – mathieu 2012-08-17 07:27:43

2

这是一个extension methodIPrincipal它返回一个自定义类型的对象Site.Web.Models.SiteIdentity

主要目的表示用户对 ,其代表代码运行,包括用户的身份 (的IIdentity)和它们所属的任何角色的安全上下文。