Я заметил, что когда я установил StructureMap из NuGet в свой проект ASP.NET MVC3, пакет Dave Ebbo WebActivator также был добавлен в качестве зависимости.
WebActivator предоставляет атрибут PreApplicationStartMethod
и в шаблонном коде, добавленном во время установки, используется для инициализации контейнера IoC и средства разрешения зависимостей в своем собственном классе, вместо того, чтобы делать это внутри Global.asax
Application_Start
. способ.
Учитывая, что ASP.NET 4 уже имеет свой собственный System.Web.PreApplicationStartMethodAttribute
, почему WebActivator было необходимо предоставить свою собственную версию , а StructureMap использовать это?
Я предполагаю, что у меня нет для использования варианта WebActivator?
Добавлен код для Дарина:
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));
}
}
}