首页 > 解决方案 > 如何实现一个通用的抽象函数?

问题描述

问题比问题看起来要复杂一些。我有一个抽象类。我希望它有一个抽象函数,但具有类的返回类型和参数类型,可以实现它。

所以我想要类似的东西:

public abstract class Class
{
    public abstract T DoSomething(T variable) where T : Class;
}

所以我可以上另一堂课

public class Class1 : Class
{
    public override Class1 DoSomething(Class1 variable) {...}
}

这可能吗?

标签: c#

解决方案


是的,您需要一个受限于基本类型的泛型参数。

public abstract class MyClass<T> where T : MyClass<T>
{
    public abstract T DoSomething(T variable);
}

public class MyDerivedClass : MyClass<MyDerivedClass>
{
    public override MyDerivedClass DoSomething(MyDerivedClass variable)
    { ... }
}

这有点类似于自引用的通用模式


推荐阅读