Мне удалось выполнить sh то, что я искал, с помощью контейнера Microsoft.Extensions.DependencyInjection.
В моем классе-оболочке MSDependencyInjector я использовал расширение ActivatorUtilities.
public static T GetService<T, I>(I interfaceInstance)
{
return ActivatorUtilities.CreateInstance<T>(container, interfaceInstance);
}
Реализовано в частичном классе моей страницы, о котором я писал:
_userLoginPresenter = MSDependencyInjector.GetService<UserLoginPresenter,
IUserLoginView>(this);
Предостережение: параметр 'T' createInstance требует конкретного типа класса, а не интерфейса. Это вызвало многочасовое разочарование, в первую очередь вызвав возникновение этого вопроса. Документация MS не самая лучшая, но я определенно неправильно ее прочитал.
Я не уверен, как реализовать что-то столь же простое в Simple Injector, и мне было бы интересно узнать. Основываясь на моем чтении, я не уверен, не является ли мое решение чем-то вроде локатора услуг, которого следует избегать в зависимости от того, из какого вы лагеря. Однако, если реализация этого может быть ограничена просто для решения потребности в этой парадигме MVP, я надеюсь, что все будет хорошо.