Вы всегда можете создать модульный тест, который (через отражение) извлекает все классы, производные от Controller
и утверждает, что каждый класс также является подклассом MyBaseController
. Это было бы по линии
[TestMethod]
public class All_Controllers_Derive_From_MyBaseController()
{
// Act
var controllerTypes = AppDomain.CurrentDomain
.GetAssemblies()
.SelectMany(asm => asm.GetTypes())
.Where(t => t.IsSubclassOf(typeof(Controller))
.ToList();
// Verify
foreach (var type in controllerTypes)
{
// Make sure the type isn't the actual controller type
if (type is Controller)
continue;
Assert.IsTrue(type.IsSubclassOf(typeof(MyBaseController)),
string.Format("{0} is not a subclass of the MyBaseController class", type.FullName));
}
}
Теперь, если кто-то создаст контроллер, который не использует ваш базовый контроллер, ваши модульные тесты не пройдут и скажут вам, какие из них неверны.
Обратите внимание, что этот код был написан от руки, поэтому может потребоваться некоторая корректировка, но это основная идея.