Damon Earl
Damon Earl

Reputation: 344

Extension Methods with Custom Classes

I'm attempting to extend my custom classes and running into a problem where it cannot find the extension method.. I have and can extend any built in classes or even ones contained within DLL's. I don't know if this is a compilation error or if I'm doing something wrong. Threw together a small program for an example, won't compile..

Here's the extension:

namespace ExtensionMethodTesting.Extension
{
    public static class Extension
    {
        public static void DoSomething(this ExtensionMethodTesting.Blah.CustomClass r)
        {

        }
    }
}

Here's the Custom Class:

namespace ExtensionMethodTesting.Blah
{
    public class CustomClass
    {
        public static void DoNothing()
        {

        }
    }
}

Here's the code calling it:

using ExtensionMethodTesting.Blah;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ExtensionMethodTesting.Extension;

namespace ExtensionMethodTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            CustomClass.DoNothing();
            CustomClass.DoSomething();
        }
    }
}

I must be missing something... Anyways the exact error just for clarification is:

Error 1 'ExtensionMethodTesting.Blah.CustomClass' does not contain a definition for 'DoSomething' c:\users\damon\documents\visual studio 2013\Projects\ExtensionMethodTesting\ExtensionMethodTesting\Program.cs 16 25 ExtensionMethodTesting

Upvotes: 1

Views: 3490

Answers (2)

Chris
Chris

Reputation: 4471

Extension methods require an instance of an object. You'll have to new up a CustomClass to use it.

var custom = new CustomClass();
custom.DoSomething();

See this answer as to why that is.

Upvotes: 4

Mephy
Mephy

Reputation: 2986

You need to instantiate an object of the CustomClass to use its extension method.

CustomClass obj = new CustomClass();
obj.DoSomething();

Upvotes: 2

Related Questions