CodeShot
Midسختی 3 از ۵· در 30٪ مصاحبه‌های این حوزه پرسیده شده

چرا در پروژه‌های .NET مدرن به‌جای پیاده‌سازی دستی Singleton از DI Container استفاده می‌شود؟

نشان کردن

پاسخ کوتاه

DI Container طول عمر Singleton را به‌صورت متمرکز، تست‌پذیر و بدون کد تکراری مدیریت می‌کند.

پاسخ کامل

پیاده‌سازی دستی Singleton (با private constructor و یک فیلد static) تست‌نویسی را سخت می‌کند چون نمی‌توان به‌راحتی آن را Mock کرد؛ ثبت یک سرویس با AddSingleton در DI همان رفتار را می‌دهد ولی کاملاً قابل جایگزینی در تست است.

مثال کد

csharp\nbuilder.Services.AddSingleton<ICacheService, MemoryCacheService>();\n

اشتباه رایج

پیاده‌سازی دستی الگوی Singleton کلاسیک در کدهای جدید .NET، درحالی‌که DI Container همان نتیجه را با کیفیت بهتر می‌دهد.