Non, vous ne pouvez pas avoir de constructeurs sur les interfaces pour les raisons qui ont été affichées. Cependant, vous pouvez avoir des classes abstraites. Disons par exemple que vous avez cette classe de base.
public abstract class ClassOne
{
protected int _x;
protected string _s;
public ClassOne(int x, string s)
{
_x = x;
_s = s;
}
}
Remarquez qu'il n'y a pas de constructeur qui ne prend aucun argument (constructeur par défaut) ce qui signifie que toute classe qui hérite de ClassOne doit appeler le constructeur qui a 2 arguments.
Ce n'est donc pas valide et ne compilera pas.
public class ClassTwo : ClassOne
{
public ClassTwo()
{ }
}
Cependant, ceci est valide et compilera.
public class ClassTwo : ClassOne
{
public ClassTwo(int x, string s) : base(x, s)
{ }
}
Je tiens à souligner ici qu'en C#, vous ne pouvez hériter que d'une seule classe de base. Cela signifie que ce n'est peut-être pas la bonne solution pour une situation particulière, mais c'est une chose à laquelle il faut penser.
Tony.