У меня есть страница веб-форм ASP.NET, которую докладчик должен заполнить элементами управления. Это взаимодействие несколько чувствительно к жизненному циклу страницы, и мне было интересно, есть ли в этом хитрость, о которой я не знаю.
Я хочу быть практичным во всем, но не проверять компромисс.
В настоящее время у меня есть это:
public interface ISomeContract
{
void InstantiateIn(System.Web.UI.Control container);
}
Этот контракт зависит от System.Web.UI.Control, и мне нужно, чтобы он мог что-то делать с помощью модели программирования ASP.NET Web Forms. Но ни представление, ни докладчик могут не знать об элементах управления сервером ASP.NET.
Как мне обойти это? Как я могу работать с моделью программирования ASP.NET Web Forms в моих конкретных представлениях, не принимая зависимость System.Web.UI.Control в моих контрактных сборках?
Чтобы прояснить ситуацию немного, этот тип интерфейса полностью связан с композицией пользовательского интерфейса (с использованием MEF). Он известен всему фреймворку, но на самом деле он вызывается только из конкретного представления. Конкретное представление по-прежнему является единственным, что известно о веб-формах ASP.NET. Однако те публичные методы, которые говорят, что InstantiateIn(System.Web.UI.Control)
существуют в моих контрактных сборках, и это подразумевает зависимость от ASP.NET Web Forms.
Я думал о каком-то механизме двойной отправки или даже шаблоне посетителей, чтобы попытаться обойти это, но я пока не знаю, в каком направлении я хочу идти, и мне действительно хотелось бы получить какую-то информацию по этому вопросу.