[英]Extension Methods with Custom Classes
我试图扩展我的自定义类,并遇到一个无法找到扩展方法的问题。.我拥有并且可以扩展任何内置类甚至是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
扩展方法需要一个对象的实例。 您必须new
一个CustomClass
才能使用它。
var custom = new CustomClass();
custom.DoSomething();
看到这个答案 ,为什么会这样。
您需要实例化CustomClass
的对象才能使用其扩展方法。
CustomClass obj = new CustomClass();
obj.DoSomething();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.