Comment forcer les enfants de la classe abstraite à implémenter une méthode statique?

Dupliquer possible:
Comment puis-je forcer les classes héritées à implémenter une méthode statique en C #?

Je comprends que résumé et statique sont opposés, mais je veux forcer les classes dérivées à implémenter une méthode statique. Comment puis je faire ça?

Editer après SimonC: En essayant de décrire ce que je veux faire, je me suis rendu compte que les méthodes statiques de super classe ne pourront pas appeler la version de la sous-classe remplacée.

Mais la solution alternative d’Olivier a l’air bien.

Une approche possible de la combinaison d’un comportement statique avec une implémentation d’inheritance ou d’interface consiste à utiliser le modèle singleton. L’access à un object singleton est statique, mais l’object est créé avec new comme un object “normal”

 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). } 

Accéder à une méthode du singleton

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

Vous ne pouvez pas. Les méthodes statiques ne sont pas sujettes au comportement polymorphe. Vous ne pouvez même pas remplacer les méthodes statiques volontairement, encore moins forcer une classe à les remplacer.

Désolé, mais c’est impossible. Les classes abstraites et / ou de base concernent l’inheritance des objects.

static méthodes static sont spécifiques à une et une seule classe et ne peuvent pas être héritées.