来源正在抛出错误:
'nn.asdf' does not contain a definition for 'extension_testmethod'
我真的不知道为什么......
using System.Linq;
using System.Text;
using System;
namespace nn
{
public class asdf
{
public void testmethod()
{
}
}
}
namespace nn_extension
{
using nn;
//Extension methods must be defined in a static class
public static class asdf_extension
{
// This is the extension method.
public static void extension_testmethod(this asdf str)
{
}
}
}
namespace Extension_Methods_Simple
{
//Import the extension method namespace.
using nn;
using nn_extension;
class Program
{
static void Main(string[] args)
{
asdf.extension_testmethod();
}
}
}
任何想法?
答案 0 :(得分:6)
扩展方法是一种静态方法,其行为类似于要扩展的类型的实例方法,也就是说,您可以在类型为asdf
的对象的实例上调用它。您无法将其称为扩展类型的静态方法。
将您的Main
更改为:
asdf a = new asdf();
a.extension_testmethod();
当然,您总是可以像声明类型(static
)的简单asdf_extension
非扩展方法一样调用:
asdf_extension.extension_testmethod(null);
答案 1 :(得分:1)
扩展方法适用于类实例:
var instance = new asdf();
instance.extension_testmethod();