NuGet'ten StructureMap'i ASP.NET MVC3 projeme yüklediğimde Dave Ebbo'nun WebActivator paketinin bağımlı olarak eklendiğini fark ettim.Hangi PreApplicationStartMethod kullanmalıyım?
WebActivator zaman yüklemek eklenen Demirbaş kodunda, bir PreApplicationStartMethod
niteliğini sağlar ve, bunun yerine bu iç Global.asax
'ın Application_Start
yöntemi yapmanın da kendi sınıfında IoC kapsayıcı ve bağımlılık çözücü başlatmak için kullanılır.
System.Web.PreApplicationStartMethodAttribute
neden
arzın kendi sürümüne için WebActivator için gerekli ve StructureMap bu kullanmak içindi?
ben WebActivator en varyantını kullanmak değil yapmak tahmin ediyorum? Darin için
Eklendi kodu: ASP.NET MVC 3 DI kapları için
using System.Web;
using System.Web.Mvc;
using StructureMap;
[assembly: WebActivator.PreApplicationStartMethod(
typeof(MyMvcApp.App_Start.StructuremapMvc), "Start")]
// or
[assembly: PreApplicationStartMethod(
typeof(MyMvcApp.App_Start.StructuremapMvc), "Start")]
namespace MyMvcApp.App_Start {
public static class StructuremapMvc {
public static void Start() {
var container = (IContainer) IoC.Initialize();
DependencyResolver.SetResolver(new SmDependencyResolver(container));
}
}
}
Bunu tamamen anlıyorum, ancak StructureMap'in neden "System.Web.PreApplicationStartMethodAttribute" sağlanan ASP.NET 4 üzerinden 'WebActivator.PreApplicationStartMethodAttribute' kullanmayı tercih ettiğini merak ediyorum. – Kev
@Kev, uygulama başına tek bir "System.Web.PreApplicationStartMethodAttribute" sahibi olabileceğinizden ve StructureMap onu kullanmış olsaydı, artık kendi özel başlatmalarınızı sağlayamayacaksınız. "WebActivator.PreApplicationStartMethod", yerleşik ASP.NET 4.0 özniteliğinden daha ayrıntılıdır. Bu ona dayanır ama tüm 'WebActivator.PreApplicationStartMethod' kayıt olmak ve hepsini çalıştırmak için yansıma kullanır. Bu nedenle, NuGet paketleri bu yaklaşımı kullanır. Yerleşik yöntemi kaçırmamak için. –
Evet, ama biraz loş kestiriyorsam beni affet, StructureMap aslında * onu kullanmıyor * başka bir başlatma kodu eklenemez. Soruma eklediğim kodu görün. Başka bir StructureMap işlevi olmayan 'Başlat()' için başka bir başlatma kodu ekleyebilirim. – Kev