繁体   English   中英

自定义类的扩展方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM