静态类的扩展方法?

时间:2010-01-05 05:52:59

标签: c# extension-methods static-classes

  

可能重复:
  Can I add extension methods to an existing static class?

我知道我可以通过以下方式扩展课程。我有一个静态类,我想扩展。我怎么能这样做?我想写ClassName.MyFunc()

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

3 个答案:

答案 0 :(得分:15)

  

您不能在静态类上使用扩展方法,因为扩展方法   仅适用于实例化   类型和静态类不能   实例

检查此代码..

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

        return false;
    }

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

答案 1 :(得分:10)

您无法在C#中扩展静态类。扩展方法通过定义在某种类型上作为实例方法出现的静态方法来工作。您无法定义扩展静态类的扩展方法。

答案 2 :(得分:0)

您可能希望将静态类转换为singleton。然后只有一个类的实例。你可以在它上面使用扩展方法,因为它是一个实例。

如果您有权访问该类的源代码。