Я разрабатываю приложение с помощью модулей. Каждый модуль соответствует устаревшей системе, которую мы имеем здесь в компании. Использование кода, как это, я могу впрыснуть контроллеры из библиотеки классов в приложение MVC с помощью Unity Container:Можно ли вводить маршрут, используя контейнер Unity?
using System.Linq;
using System.Web.Mvc;
using Microsoft.Practices.Unity.Mvc;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyProject.Common.UnityMvcActivator), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(MyProject.Common.UnityMvcActivator), "Shutdown")]
namespace MyProject.Common
{
public static class UnityMvcActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
// TODO: Uncomment if you want to use PerRequestLifetimeManager
// Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
}
Этот код автоматически добавляется в библиотеку классов при установке the Unity.Mvc bootstrapper.
Все библиотеки классов, реализованные в виде модулей, будут ориентированы на веб-сайты.
Работает как шарм, но я все еще должен определить все маршруты в RouteConfig
из приложения MVC. Моя задача - определить эти маршруты в библиотеке классов. Я не нашел никаких объяснений, как это сделать.
Возможно ли это? Если да, то как?
Ну, цель точно вводить новые контроллеры из библиотеки классов для веб-приложений. Контроллеры имеют префикс идентификатора модуля. Я хотел бы иметь некоторые примеры кода в ответе. Спасибо. –
@CiganoMorrisonMendez Ваша сложность в настройке маршрутов из зависимой сборки является признаком того, что вы должны придерживаться другого подхода. Библиотека классов не должна быть веб-зависимой. – moarboilerplate
@CiganoMorrisonMendez пример кода для инъекционного подхода. Я рекомендую ответ в ссылке, использующей 'UnityContainerExtension'. – moarboilerplate