可能重复:
我如何可以强制继承类来实现在C#中的静态方法?
我理解抽象的,静态的是相反的,但我想迫使派生类实现的静态方法。 我怎样才能做到这一点?
SimonC后编辑:尝试来形容我想做的事情,我意识到,超类的静态方法将无法调用子类重写版本。
但Olivier的替代解决方案看起来不错。
可能重复:
我如何可以强制继承类来实现在C#中的静态方法?
我理解抽象的,静态的是相反的,但我想迫使派生类实现的静态方法。 我怎样才能做到这一点?
SimonC后编辑:尝试来形容我想做的事情,我意识到,超类的静态方法将无法调用子类重写版本。
但Olivier的替代解决方案看起来不错。
结合了继承或接口实现静态行为的一种可能的方法是使用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);
你不能。 静态方法不受多态行为。 你甚至不能覆盖静态方法自愿,更不用说强制类覆盖它们。
很抱歉,但它是不可能的。 摘要和/或基类都是有关对象的继承。
static
方法是具体到一个且只有一个类,而不是继承。