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.