【问题标题】:explanation of this c# definition: function_name(this class_name namevar) [duplicate]这个 c# 定义的解释:function_name(this class_name namevar) [重复]
【发布时间】:2012-08-16 13:52:28
【问题描述】:

我正在寻找有关此结构的信息,但找不到;因此,如果有人有时间解释这一点或指向一些解释它的 URL。

我在函数 sin web C# 应用程序中找到了这个定义,例如:

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

 }

【问题讨论】:

标签: c#


【解决方案1】:

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

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

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

【讨论】:

  • 他的问题也与 ASP 有很大关系,因此是“Site.Web.Models.SiteIdentity”
  • 值得注意的是,它实际上并没有将方法添加到类中,它只是提供语法,使其看起来好像方法已添加到类中。该方法本身只是一个静态方法,即使它是一个扩展方法。 (虽然这似乎没有意义,但它确实很重要。)
  • 感谢那个网址,我需要什么
【解决方案2】:

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

一个主体对象代表用户的安全上下文 代码代表谁运行,包括该用户的身份 (IIdentity) 以及他们所属的任何角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-14
    • 2015-11-29
    • 2017-01-03
    • 1970-01-01
    • 2015-03-28
    • 2011-03-02
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多