Yeni ASP.NET MVC 6 şeyleri almaya çalışıyorum, ancak yeni DI sistemi ile çok zor bir zaman geçiriyorum. Kaynakları çevrimiçi bulmayı denedim, ancak bulduğum her şey onu kullanmak için sadece en mutlak minimum değeri kapsamaktadır.Çevirme ASP.NET MVC 6 DI
Daha önce Ninject
kullanıyordum ve böyle çalışan birkaç tel-up vardır:
Bind<IDocumentStore>()
.ToMethod(c => CreateDocumentStore())
.InSingletonScope();
private static IDocumentStore CreateDocumentStore() {
// lots of initialization code, etc.
return documentStore;
}
Ama şimdiye kadar ben Microsoft'un yeniye bu tür davranışları çevirmek nasıl bulmak zor bir zaman yaşıyorum DI sistemi.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
ve: herşey hedef hizmeti için varsayılan yapıcı tamamen iş gibi görünüyor
services.AddMvc();
bulabilirim Bütün böyle örneklerdir. Bu yeni DI sisteminde ihtiyaç duyduğum davranışları üretmenin bir yolu var mı?
Ben
services.Configure<TOptions>(options => {});
gördüğüm Ama bunu ben düşünüyorum, yoksa belirli bir davranış için ayrılmıştır eğer yapacak konusunda gerçekten net değilim.
? Bu yeni DI sistemi, Ninject'in (ve diğer kapların) desteklediği ve yerleşik DI sisteminin [makul boyuttaki herhangi bir SOLID uygulaması için] kullanılamayacağı bir alt kümeyi destekler (https://stackoverflow.com/questions/30681477/dependency- enjeksiyon-in-the-asp-net-5-vnext/30682214 # 30682214). – Steven
Doğru olduğunu düşündüğümden emin değilim, ama dürüst olmak gerekirse, mesajın çoğu kafamın üzerinden geçiyor. Temel olarak sadece kurucu enjeksiyonuna ve MAYBE mülk enjeksiyonuna bir kez ihtiyacım var. Ama biraz daha fazla araştırmaya çalışacağım – Ciel
Dürüst olmak gerekirse, mülk enjeksiyonu kullandığımı sanmıyorum; Ben sadece kurucu enjeksiyonu kullanıyorum. Ancak, günlüğe kaydetme, denetim takibi, izin kontrolleri, doğrulama, işlem yönetimi, vb. Gibi kesişen kaygılar eklemeye başladığınızda, bir mimariniz varsa (https://bit.ly/1vouSrm)) [dekoratörler] (https://en.wikipedia.org/wiki/Decorator_pattern) kullanarak basit ve zarif bir şekilde kesişen endişeleri eklemenizi sağlar. Dekoratörleri vNext konteynırla olgun kaplardan biriyle yapabileceğiniz gibi uygulamak imkansızdır. – Steven