如何强制抽象类儿童的实现静态方法? [重复](How to force abstract cla

2019-07-04 03:06发布

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

我理解抽象的,静态的是相反的,但我想迫使派生类实现的静态方法。 我怎样才能做到这一点?

SimonC后编辑:尝试来形容我想做的事情,我意识到,超类的静态方法将无法调用子类重写版本。

但Olivier的替代解决方案看起来不错。

Answer 1:

结合了继承或接口实现静态行为的一种可能的方法是使用Singleton模式。 一个单对象的访问是静态的,但目的是通过创建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).
}

访问单的方法

ISomeInterface obj = SomeClass.Instance; // Static access to interface.
var y = obj.SomeMethod(x);


Answer 2:

你不能。 静态方法不受多态行为。 你甚至不能覆盖静态方法自愿,更不用说强制类覆盖它们。



Answer 3:

很抱歉,但它是不可能的。 摘要和/或基类都是有关对象的继承。

static方法是具体到一个且只有一个类,而不是继承。



文章来源: How to force abstract class childs to implement a static method? [duplicate]
标签: c# oop