如何强制抽象类子实现静态方法?

bok*_*kan 5 c# oop

可能重复:
如何强制继承类在C#中实现静态方法?

我理解抽象和静态是相反的,但我想强制派生类来实现静态方法.我怎样才能做到这一点?

在SimonC之后编辑:在尝试描述我想要做的事情时,我意识到超类的静态方法将无法调用重写的子类版本.

但是olivier的替代解决方案看起来不错.

Oli*_*bes 14

将静态行为与继承或接口实现相结合的可能方法是使用单例模式.对单例对象的访问是静态的,但是对象是new像"普通"对象一样创建的

public interface ISomeInterface { ... }

public class SomeClass : ISomeInterface
{ 
    public static readonly SomeClass Instance = new SomeClass();

    private SomeClass()
    { 
    }

    // Implement ISomeInterface
    // or override an abstract member from a base class (not shown here).
}
Run Code Online (Sandbox Code Playgroud)

访问单身人士的方法

ISomeInterface obj = SomeClass.Instance; // Static access to interface.
var y = obj.SomeMethod(x);
Run Code Online (Sandbox Code Playgroud)


Tud*_*dor 5

你不能。静态方法不受多态行为的影响。您甚至不能自愿重写静态方法,更不用说强制类重写它们了。