boolean IsPalindrome(string s) {
return s = s.Reverse();
}
Сообщение Кена очень интересно, но сейчас стоит узнать больше о «производственных» контейнерах IoC, так как некоторые теперь поддерживают этот сценарий.
В Autofac например, вы можете «сгенерировать» фабрику в качестве делегата:
builder.RegisterGeneratedFactory<Func<IDialogController>>();
Затем в вашей основной форме:
class MainForm ... {
Func<IDialogController> _controllerFactory;
public MainForm(Func<IDialogController> controllerFactory) { ... }
void ShowDialog() {
using (var controller = _controllerFactory())
{
}
}
Autofac заполнит параметр конструктора controllerFactory во время выполнения. Вместо этого в модульных тестах вы можете легко предоставить конструктору лямбду.
Единственное разумное решение, которое я нашел, - это сделать ваш контейнер синглтоном. Некоторые фреймворки IoC делают это за вас, но, возможно, вам придется развернуть собственную реализацию Singleton. Взгляните на идеи Джона Скита .
Удачи вам с MVC в Winforms. Это крутая кривая обучения, по которой я только начинаю подниматься.