我正在尝试扩展我的自定义类并遇到无法找到扩展方法的问题。我已经可以扩展任何内置类甚至包含在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
答案 0 :(得分:3)
扩展方法需要一个对象的实例。您必须new
向上CustomClass
才能使用它。
var custom = new CustomClass();
custom.DoSomething();
请参阅this answer原因。
答案 1 :(得分:2)
您需要实例化CustomClass
的对象才能使用其扩展方法。
CustomClass obj = new CustomClass();
obj.DoSomething();