Avatar ·

Appel de méthode virtuelle dans un constructeur : quel est le danger et comment l'éviter ?

Bonjour à tous ! Je suis un développeur C# débutant, et récemment ReSharper a commencé à m'afficher l'avertissement "Virtual member call in a constructor" pour ce code : ```csharp public class Animal { public string Name { get; set; } public Animal(string name) { Initialize(name); } public virtual void Initialize(string name) { Name = name; Console.WriteLine("Animal initialized"); } } public class Dog : Animal { public string Breed { get; set; } public Dog(string name, string breed) : base(name) { // Vide } public override void Initialize(string name) { base.Initialize(name); Breed = "Unknown"; Console.WriteLine("Dog initialized"); } } ``` Le code semble fonctionner et affiche les messages attendus, mais ReSharper souligne l'appel à `Initialize(name)` dans le constructeur de `Animal`. Je ne comprends pas quel est le problème. Après tout, les méthodes virtuelles sont faites pour être redéfinies...