Трябва ли да направя действията на контролера на ASP.NET MVC виртуални?

Файл -> Нов проект за ASP.NET MVC проекти, използвани за генериране на контролери с виртуални действия. Не съм сигурен дали това спря с MVC 2 или MVC 3, но това вече не е ли най-добрата практика?


person kenwarner    schedule 04.06.2011    source източник
comment
Интересен въпрос. Не бях забелязал промяната, но сега, когато я споменахте, това наистина звучи смътно познато.   -  person Jedidja    schedule 04.06.2011


Отговори (4)


T4MVC Прави методите за действие виртуални. Ако го използвате, той трябва да направи методите за действие виртуални, няма друг начин да работи

person archil    schedule 04.06.2011
comment
да, и аз го разбрах. Все пак се чудех как. Трябва да се разрови в характеристиките на виртуалния - person tugberk; 05.06.2011
comment
Правенето на методите за действие виртуални, грубо казано, не е функцията на asp.net mvc. Това е по-скоро функцията на езика c#, която T4MVC използва - person archil; 05.06.2011
comment
това беше. T4MVC добави виртуалната ключова дума към всяко действие, което все още не я е имало. това също направи моите контролери частични класове - person kenwarner; 05.06.2011

текущата документация за ASP.NET MVC 3 не показва виртуални методи. Не съм много сигурен какво ще ви спечели, ако ги направите virtual, тъй като никога не съм подкласирал контролери, за да заменят действията.

person Jedidja    schedule 04.06.2011

Ако ги направите виртуални, това ще направи контролерите по-лесни за подиграване, ако ги използвате в тестове.

person Colin Mackay    schedule 04.06.2011
comment
Интересно; извличате ли TestController : RealController и заменяте ли методите за действие? Любопитен съм как ще работи подигравката на методите над подигравката на зависимостите. Имате ли публикации в блогове за този подход? - person Jedidja; 05.06.2011
comment
Защо ще се подигравате с подкласове? - person Roy Dictus; 05.06.2011

Генерираният код може да бъде направен виртуален по различни причини. Не е добра практика да правите свой собствен код виртуален, освен ако не се изисква от някакъв инструмент. Вижте Принцип на заместване на Лисков и Принцип на отворено/затворено. Мисля, че някои рамки правят това, за да улеснят създаването на проксита, но не мога да си представя причина да направите всичките си методи виртуални. За мен това крещи копиране/поставяне или карго култов програмист.

person Sprague    schedule 19.02.2016