Sobes.tech
Junior — Middle

Πώς καθορίζεται η διάρκεια ζωής ενός αντικειμένου μετά την εγγραφή του στο δοχείο εισαγωγής εξαρτήσεων;

sobes.tech AI

Απάντηση από AI

Η διάρκεια ζωής ενός αντικειμένου σε ένα κοντέινερ εξαρτάται από τον κύκλο ζωής (lifetime), που ορίζεται κατά την εγγραφή.

Οι κύριες επιλογές κύκλου ζωής σε C# (π.χ., στο Microsoft.Extensions.DependencyInjection):

  • Transient: δημιουργείται ένα νέο αντίγραφο σε κάθε αίτημα.
  • Scoped: δημιουργείται ένα αντίγραφο ανά πεδίο (π.χ., ανά αίτημα HTTP σε μια web εφαρμογή).
  • Singleton: δημιουργείται ένα αντίγραφο κατά την πρώτη αίτηση και παραμένει ζωντανό μέχρι το τέλος της εφαρμογής.

Παράδειγμα εγγραφής υπηρεσίας με διαφορετικούς χρόνους ζωής:

services.AddTransient<IMyService, MyService>(); // νέο αντικείμενο κάθε φορά
services.AddScoped<IMyService, MyService>();   // ένα αντικείμενο ανά συνεδρία/αίτημα
services.AddSingleton<IMyService, MyService>(); // ένα αντικείμενο σε όλη τη διάρκεια λειτουργίας

Έτσι, η διάρκεια ζωής ενός αντικειμένου εξαρτάται από τον επιλεγμένο κύκλο ζωής κατά την εγγραφή στο DI container.