Вам, вероятно, не понравится этот ответ, но перегрузка для Page.LoadControl
, которая позволяет указывать тип элемента управления и добавлять аргументы конструктора, не привязывает ascx
к выделенному коду и всем связанным дочерним элементам управления в конечном итоге будет нулевым.
В прошлом я работал над этим, добавляя еще один метод установки зависимостей после создания пользовательского элемента управления, но это не идеальное решение.
Это сказало, что ты не делаешь ничего плохого. Привязка будет работать правильно, если вы используете Page.LoadControl("~/path/to/mycontrol.ascx")
, но у вас не будет инжектора конструктора.
Я полагаю проблема заключается в том факте, что базовый класс на самом деле не имеет отношения с интерфейсной страницей, кроме как через директиву page, которая определяет его как класс code-behind. Ничто не останавливает несколько различных внешних интерфейсов, использующих один и тот же класс, как и его код-сзади, поэтому загрузка с помощью Type
делает либо очень трудным, либо невозможным определение того, каким будет правильное ascx
для связывания.