Birçok kitap, bağımlılık enjeksiyonu ve kontrol tersine çevirme gibi kavramlardan bahseder; bunların tümü gevşek bağlı katmanlar, bileşenler ve sınıf amaçlarını gerçekleştirmeyi amaçlar.
Kontrolör ile Model arasındaki doğrudan bağlantıyı ayırmak için Depo sınıfı yaygın olarak kullanılır. Depo sınıfı ile Kontrolör arasındaki yakın bağlantıyı koparmak için genellikle doğrudan Depo sınıfı tarafından tanımlanmaz ve örneklenmez, Denetleyicinin yapım yöntemiyle belirtilen Depoya enjekte edilir.
Popüler IoC konteynerleri: Ninject, Autofac, Unity.
İşte Autofac enjeksiyon MVC5 ve Webapi2'nin nasıl kullanılacağına dair kısa bir açıklama.
1. Autofac, Autofac.Mvc5 ve Autofac.Webapi2'ye referans vermek için nupkg kullanın.
PM> install-package autofac -sürüm 3.5.0
PM> install-package autofac.mvc5
PM> autofac.webapi2 paketini kur (Not: Projenizde webapi2 kullanıyorsanız, burada webapi2 olmalı, webapi değil, aksi takdirde çalışma zamanında "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" görünür) miras güvenlik kurallarını ihlal etti. Geçersiz kılılan yöntemin güvenlik erişilebilirliği, yeniden yazılmış yöntemin güvenli erişilebilirliğiyle eşleşmelidir. Yanlış. )
2. Bileşeni kaydedin.
3. Daha sonra kullanmak üzere bir Konteyner oluşturun.
var konteyner=builder. Build(); 4. Konteynerden ömür boyu bir dürbün oluşturun.
5. Bu Yaşam Boyu Kapsamını bileşenlerin örneklerini ayrıştırmak için kullanın.
yapılandırma. DependencyResolver = yeni AutofacWebApiDependencyResolver(container); API konteyneri kaydetmek için HttpConfiguration nesnesini kullanmanız gerekir DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); MVC konteynerini kaydet 6. WebApiConfig sınıfının Register metodunda, yukarıdaki adım kodunu çağırın ve HttpConfiguration nesnesini iletin.
Autofac'ın avantajı, yapılandırma gerektirmeden bir anda ayrılabilmesidir; autofac, MVC'de "konvansiyon yapılandırmadan daha büyüktür" kavramını daha iyi uygular.
|