具有自定义类的扩展方法

时间:2014-08-19 23:18:29

标签: c# extension-methods

我正在尝试扩展我的自定义类并遇到无法找到扩展方法的问题。我已经可以扩展任何内置类甚至包含在DLL中的类。我不知道这是编译错误还是我做错了。把一个小程序放在一起举例,不会编译..

这是扩展名:

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

        }
    }
}

这是自定义类:

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

        }
    }
}

以下是调用它的代码:

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();
        }
    }
}

我必须遗漏一些东西......无论如何,只是澄清的确切错误是:

  

错误1'ExtensionMethodTesting.Blah.CustomClass'不包含'DoSomething'的定义c:\ users \ damon \ documents \ visual studio 2013 \ Projects \ ExtensionMethodTesting \ ExtensionMethodTesting \ Program.cs 16 25 ExtensionMethodTesting

2 个答案:

答案 0 :(得分:3)

扩展方法需要一个对象的实例。您必须new向上CustomClass才能使用它。

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

请参阅this answer原因。

答案 1 :(得分:2)

您需要实例化CustomClass的对象才能使用其扩展方法。

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