Serenity, bağımlılıklarını soyutlamak ve seçtiğiniz kütüphaneler ve hizmet sağlayıcılarla çalışmayı mümkün kılmak için bağımlılık enjeksiyon modelini kullanır.
Serenity, ASP.NET Core'un yerleşik Dependency Injection özelliğiyle derinlemesine entegredir.
Bazı Serenity derlemelerinin Serenity.Extensions.DependencyInjection ad alanındaki varsayılan Serenity hizmetlerini kolayca yapılandırmak için bazı uzantı yöntemleri sağlıyoruz :
| toplantı | sınıf |
|---|---|
| Serenity.Core | CoreServiceCollectionUzantılar |
| Serenity.Data | DataServiceCollectionExtensions |
| Huzur.Varlık | EntityServiceCollectionExtensions |
| Serenity.Services | ServiceCollectionUzantılar |
| Serenity.Web | DynamicScriptServiceCollectionExtensions |
| Serenity.Web | UploadServiceCollectionExtensions |
Startup.csBu uzantı yöntemleri genellikle Serenity hizmet soyutlamalarının varsayılan uygulamalarını kaydetmek için dosyanın içinde çağrılır :
services.AddServiceHandlers();
services.AddDynamicScripts();
services.AddCssBundling();
services.AddScriptBundling();
services.AddUploadStorage();
Tüm bu uzantılar, TryAddSingletonkayıt çağrılarının deneme sürümünü kullanır; dolayısıyla, belirli bir hizmet için başka bir sağlayıcıyı aramadan önce kaydederseniz, kaydınızı geçersiz kılmazlar:
// here we register the MyCustomScriptBundleManager as the custom
// implementation of the IScriptBundleManager service
collection.AddSingleton<IScriptBundleManager, MyCustomScriptBundleManager>();
// in the line below AddScriptBundling will also try to register the default
// implementation of IScriptBundleManager, but as it will use the
// TryAddSingleton variant, it won't override MyCustomScriptBundleManager
services.AddScriptBundling();
ASP.NET Core çerçevesinde DI hakkında daha fazla bilgi için aşağıdaki belgeye bakın:
ASP.NET Core'a bağımlılık ekleme - Learn.Microsoft.com
V5'ten önce Serenity'nin bir hizmet konumu kapsayıcısı vardı ancak o zamandan beri tamamen .NET DI'ye geçtik.