none
Наследование контроллеров в mvc RRS feed

  • Вопрос

  • Решил сделать не большой рефакторинг - довольно много кода можно будет поднять вверх по ирархии наследования. Практикуется такое в mvc или тут есть особый подход?
    23 марта 2013 г. 13:14

Ответы

  • Можно, если проект не большой и не используются некоторые шаблоны. Если вам нужна гибкость, то жёстко привязывать контекст базы не стоит, даже в базовом класс, можно передавать его как полиморфный объект, через конструктор. Это будет мешать слабой связанности кода и последующего применения таких паттернов как DI.
    • Помечено в качестве ответа Yoyrel 25 марта 2013 г. 5:58
    24 марта 2013 г. 16:49
    Модератор

Все ответы

  • "довольно много кода можно будет поднять вверх по ирархии наследования" - не совсем понятен вопрос, попробуйте переформулировав.
    23 марта 2013 г. 14:31
    Модератор
  • Ну сделать типа вот такого базового класса для  контроллеров:
    public class BaseController<TEntity> : Controller where TEntity:Entity
        {
            private readonly TestDb _testDb=new TestDb();
    
            protected TestDb TestDb
            {
                get { return _testDb; }
            }
    
            public ActionResult Index()
            {
                var entitys = TestDb.Set<TEntity>().ToList();
                return View(entitys);
            }
    
            protected override void Dispose(bool disposing)
            {
                _testDb.Dispose();
                base.Dispose(disposing);
            }
        }

    23 марта 2013 г. 15:05
  • Можно, если проект не большой и не используются некоторые шаблоны. Если вам нужна гибкость, то жёстко привязывать контекст базы не стоит, даже в базовом класс, можно передавать его как полиморфный объект, через конструктор. Это будет мешать слабой связанности кода и последующего применения таких паттернов как DI.
    • Помечено в качестве ответа Yoyrel 25 марта 2013 г. 5:58
    24 марта 2013 г. 16:49
    Модератор