views:

570

answers:

3

I know i can do the below to extend a class. I have a static class i would like to extend. How might i do it? I would like to write ClassName.MyFunc()

static public class SomeName
{
    static public int HelperFunction(this SomeClass v)
+6  A: 

You can't extend static classes in C#. Extension methods work by defining static methods that appear as instance methods on some type. You can't define an extension method that extends a static class.

Judah Himango
+6  A: 

You can't have extension methods on static classes because extension methods are only applicable to instantiable types and static classes cannot be instantiated.

Check this code..

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

        return false;
    }

First parameter to IsEmail() is the extending type instance and not just the type itself. You can never have an instance of a static type.

this. __curious_geek
A: 

You might want to turn your static class into a singleton. Then there will only be one instance of the class. And you can use extension methods on it because it's an instance.

This is provided you have access to the source code of the class.

John K
Can we expect an explanation for this (I hate singleton)?
Amby
Well, you wouldn't expect just one instance of "I hate singleton", would you?
Eric Lippert
How can anyone delete my I hate singleton I hate singleton comment?
acidzombie24
John K