Avatar ·

Llamada a método virtual en el constructor: ¿cuál es el peligro y cómo evitarlo?

¡Hola a todos! Soy un desarrollador principiante de C# y recientemente ReSharper comenzó a mostrarme la advertencia "Virtual member call in a constructor" en este código: ```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) { // Vacío } public override void Initialize(string name) { base.Initialize(name); Breed = "Unknown"; Console.WriteLine("Dog initialized"); } } ``` Aparentemente el código funciona y muestra los mensajes esperados, pero ReSharper resalta la llamada a `Initialize(name)` en el constructor de `Animal`. No entiendo cuál es el problema. Después de todo, los métodos virtuales existen para ser sobrescritos.