【问题标题】:Extension methods on a static class? [duplicate]静态类的扩展方法? [复制]
【发布时间】:2011-01-01 13:02:09
【问题描述】:

我知道我可以执行以下操作来扩展课程。我有一个我想扩展的静态类。我该怎么做?我想写ClassName.MyFunc()

static public class SomeName
{
    static public int HelperFunction(this SomeClass v)

【问题讨论】:

    标签: c# extension-methods static-classes


    【解决方案1】:

    静态类不能有扩展方法,因为扩展方法 仅适用于可实例化 类型和静态类不能 实例化。

    检查此代码..

        public static bool IsEmail(this string email)
        {
            if (email != null)
            {
                return Regex.IsMatch(email, "EmailPattern");
            }
    
            return false;
        }
    

    IsEmail() 的第一个参数是扩展类型实例,而不仅仅是类型本身。您永远不能拥有静态类型的实例。

    【讨论】:

      【解决方案2】:

      您不能在 C# 中扩展静态类。扩展方法通过定义在某些类型上显示为实例方法的静态方法来工作。您不能定义扩展静态类的扩展方法。

      【讨论】:

        【解决方案3】:

        你可能想把你的静态类变成singleton。然后将只有一个类的实例。你可以在它上面使用扩展方法,因为它是一个实例。

        前提是您可以访问该类的源代码。

        【讨论】:

        • 我们能对此做出解释吗(我讨厌单身)?
        • 嗯,你不会期望只有一个实例“我讨厌单身”吧?
        • 谁能删除我的我讨厌单身我讨厌单身评论?
        • @acidzombie24:我喜欢你的评论。可能有高权限(和高分)的人出于某种原因删除了它,也许他们不明白这个笑话。本站由会员经营。太糟糕了。
        猜你喜欢
        • 2011-05-12
        • 2011-05-29
        • 2011-11-16
        • 2010-10-26
        • 2012-11-22
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多