什么是扩展类?

时间:2009-08-24 14:16:31

标签: c# .net

我的老师要求我们调查扩展类是什么,但我似乎无法在MSDN或Google上找到任何内容。有什么帮助吗?

8 个答案:

答案 0 :(得分:18)

在正式的C#术语中没有“扩展类”这样的东西。它可能意味着定义extension methods的类(这不是什么特别的,它只是一个简单的static类。)

答案 1 :(得分:7)

您的老师也可能在谈论partial classes ...

答案 2 :(得分:3)

从技术上讲,“扩展类”不是什么。在白话中,某人可以使用它来引用旨在存储extension methods的类。扩展方法是用于看起来像类的实例方法的方法,但它们是静态类中的真正静态方法,用于增强和封装某些功能。当您尝试在无法直接修改的类型上扩展某些功能并添加方法时,它们特别有用。此外,它们通常与泛型类型(特别是在.net 3.5框架内)一起使用,以使用特定接口提供的方法扩展功能。

答案 3 :(得分:2)

具有extension methods

的班级
  

扩展方法可让您“添加”   没有的现有类型的方法   创建一个新的派生类型,   重新编译或以其他方式修改   原始类型。扩展方法   是一种特殊的静态方法,   但他们被称为好像他们一样   扩展类型的实例方法。   对于用C#编写的客户端代码   Visual Basic,没有明显的   呼叫之间的区别   扩展方法和方法   实际上是在一个类型中定义的。

答案 4 :(得分:1)

C#中的Extension类可以简单地是子类(继承并向基类型或接口添加更多功能)或静态类。

答案 5 :(得分:0)

我不知道扩展类是否存在。但扩展方法就在那里。 试试这个 Extension Method

答案 6 :(得分:0)

我知道这个问题有点老了但是当我读到这个问题时,我想到的一件事是Martin fowler的重构书。在第7章在对象之间移动要素中,他描述了一种名为引入本地扩展的重构。在那里,他谈到创建一个扩展类,它只不过是一个子类或一个对象的包装器。此扩展类的目的是扩展现有类的功能,如Date(Java类Date而不是。DateTime类.Net实际上是密封的。)

这里的其他一些答案是指扩展方法,它似乎是使用重构引入外来方法的另一种方式。我不确定这一点,所以我可能会错在这里。

我认为这本书是1999年编写的,大多数的例子都是用Java编写的,所以也许这与.Net没什么关系,但我想这个概念是普遍的。

答案 7 :(得分:0)

我能想到的最接近扩展类的东西是例如Microsoft的ExceptionExtensions类。 https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff654014(v=pandp.10)

如果您在具有该名称的类中创建自己的方法,则可以从Exception对象访问该方法。

public static class ExceptionExtensions
{
    public static String myMethod(this Exception ex)
    {
        return ("Hi!");
    }
}

以这种方式访问​​它:

catch(Exception ex)
{
    String message = ex.myMethod();
}