Avatar ·

استدعاء method افتراضي في constructor: ما الخطر وكيف تتجنبه؟

مرحبًا بالجميع! أنا مطور C# مبتدئ، ومؤخرًا بدأ ReSharper يعطيني تحذيرًا "استدعاء عضو افتراضي في constructor" على هذا الكود: ```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) { // فارغ } public override void Initialize(string name) { base.Initialize(name); Breed = "Unknown"; Console.WriteLine("Dog initialized"); } } ``` يبدو أن الكود يعمل ويطبع الرسائل المتوقعة، لكن ReSharper يسلط الضوء على استدعاء `Initialize(name)` في constructor الخاص بـ `Animal`. لا أفهم ما المشكلة. فالميثودات الافتراضية (virtual methods) موجودة لهذا الغرض، أليس كذلك؟