抽象と静的が反対であることは理解していますが、派生クラスに強制的に静的メソッドを実装させたいと考えています。どうやってやるの?
SimonC の後に編集: やりたいことを説明しようとしているときに、スーパー クラスの静的メソッドがオーバーライドされたサブクラス バージョンを呼び出すことができないことに気付きました。
しかし、olivier の代替ソリューションは良さそうです。
抽象と静的が反対であることは理解していますが、派生クラスに強制的に静的メソッドを実装させたいと考えています。どうやってやるの?
SimonC の後に編集: やりたいことを説明しようとしているときに、スーパー クラスの静的メソッドがオーバーライドされたサブクラス バージョンを呼び出すことができないことに気付きました。
しかし、olivier の代替ソリューションは良さそうです。
静的動作を継承またはインターフェース実装と組み合わせる可能なアプローチは、シングルトン パターンを使用することです。シングルトン オブジェクトへのアクセスは静的ですが、オブジェクトはnew
「通常の」オブジェクトのように作成されます
public interface ISomeInterface { ... }
public class SomeClass : ISomeInterface
{
public static readonly SomeClass Instance = new SomeClass();
private SomeClass()
{
}
// TODO: Implement ISomeInterface
// and/or override members from a base class.
}
シングルトンのメソッドへのアクセス
ISomeInterface obj = SomeClass.Instance; // Static access to interface.
var y = obj.SomeMethod(x);