Ana içeriğe atla

Bağımlılık Enjeksiyonu

 

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.CoreCoreServiceCollectionUzantılar
Serenity.DataDataServiceCollectionExtensions
Huzur.VarlıkEntityServiceCollectionExtensions
Serenity.ServicesServiceCollectionUzantılar
Serenity.WebDynamicScriptServiceCollectionExtensions
Serenity.WebUploadServiceCollectionExtensions

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.