Совместное использование ActionFilter между различными проектами MVC

Мне нужно создать несколько проектов Asp .Net MVC, и я хочу использовать общие фильтры действий (среди прочего) между этими проектами, чтобы избежать повторения кода.

Например:

using System.Web.Mvc;

namespace CoreMVC
{
    public class CustomHandleErrorAttribute : HandleErrorAttribute
    {
        public CustomHandleErrorAttribute() { /* ... */ }

        public override void OnException(ExceptionContext filterContext) { /* ... */ }
    }
}

Решение, о котором я думал до сих пор, состоит в том, чтобы включить этот класс (и другие) в проект библиотеки классов со ссылкой на сборку System.Web.MVC. Таким образом, каждый проект MVC может ссылаться на эту сборку и повторно использовать ее.

Это правильный способ сделать это или есть другое лучшее решение?


person Jose Alonso Monge    schedule 05.11.2015    source источник
comment
У вас есть два варианта: ваше решение или ссылка на исходные файлы для общего кода в виде файлов ссылок в ваших проектах MVC. Любой из них будет работать, но ваше решение позволит вам более легко делиться своим общим кодом с другими проектами MVC.   -  person KiwiPiet    schedule 06.11.2015
comment
То, что ты делаешь, хорошо.   -  person    schedule 06.11.2015


Ответы (1)


Библиотеки сборок/классов — это стандартный способ совместного использования/повторного использования кода в приложениях .NET, так что это один из способов сделать это. Другой способ — использовать NuGet, который также будет содержать сборку с общим кодом. Преимущество NuGet заключается в том, что вместе с библиотекой классов вы можете включить некоторые дополнительные элементы (например, некоторые сценарии начальной загрузки Powershell, которые выполняют дополнительные настройки целевого проекта, в котором вы устанавливаете NuGet). Еще одним большим преимуществом NuGet является то, что в нем может быть несколько платформ, и в зависимости от того, какую версию/платформу .NET вы устанавливаете, чтобы получить ссылку на правильную сборку.

person Darin Dimitrov    schedule 06.11.2015
comment
Считайте это принятым ответом. Мои сомнения из-за ссылки на System.Web/System.Web.MVC в моей общей библиотеке классов - person Jose Alonso Monge; 06.11.2015
comment
ASP.NET MVC доступен как NuGet. Таким образом, вы можете использовать свой собственный NuGet, чтобы лучше отделить свои зависимости. Не проблема, что ваша библиотека классов зависит от ASP.NET MVC — это совершенно нормально, если она содержит фильтры действий ASP.NET MVC. - person Darin Dimitrov; 06.11.2015