Avatar ·

Chamada de método virtual no construtor: qual o perigo e como evitar?

Olá a todos! Sou um desenvolvedor C# iniciante e recentemente o ReSharper começou a me mostrar um aviso "Virtual member call in a constructor" para 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) { // Vazio } public override void Initialize(string name) { base.Initialize(name); Breed = "Unknown"; Console.WriteLine("Dog initialized"); } } ``` O código parece funcionar e exibe as mensagens esperadas, mas o ReSharper destaca a chamada `Initialize(name)` no construtor de `Animal`. Não entendo qual é o problema. Afinal, métodos virtuais existem para serem sobres