2009-03-28 14 views
1

Étant donné un groupe d'objets qui ont un ensemble commun de propriétés et de méthodes à l'appui de la logique de domaine donnée, existe-t-il un moyen d'imposer la présence de certaines méthodes statiques sur ces objets?nécessitant la présence de méthodes statiques en C#

J'ai conclu que l'implémentation d'une interface n'atteint pas ce but (les méthodes sont uniquement des instances) et que les méthodes statiques ne peuvent pas être marquées override, virtual ou abstract.

Merci d'avance.

Répondre

4

n °

(Remarque: En F #, vous pouvez exprimer ces contraintes en utilisant des fonctions et types "^" "en ligne" (par exemple forall types T où T a une méthode statique ToInt (T) qui retourne un « int Le compilateur étend automatiquement chaque site d'appel au type spécifique.)

+0

merci. Je suis convaincu. –

3

La seule façon de forcer un type à avoir un membre statique est d'en hériter. Tous les types auront les membres statiques, et si vous avez besoin de les remplacer sur un type dérivé vous pouvez utiliser le « nouveau » mot-clé:

static void Main(string[] args) 
{ 
    Console.WriteLine(Base.Hello()); 
    Console.WriteLine(Derived.Hello()); 
    Console.Read(); 
    /* output will be: 
    Hello 
    World 
    */ 
} 

public class Base 
{ 
    public static object Hello() 
    { 
     return "Hello"; 
    } 
} 

public class Derived : Base 
{ 
    public static new object Hello() 
    { 
     return "World"; 
    } 
} 

Il est pas tout à fait la même chose que abstraite/override, mais du point de vue des consommateurs , fonctionne de manière similaire.