Не используйте строковые функции в XML, вместо этого используйте DOMDocument , это поможет вам легче разобрать XML, вот пример кода DEMO :
Replace this value";
$domDocument = new DOMDocument();
$domDocument->loadXML($string);
$address2Elements = $domDocument->getElementsByTagName('address2');
foreach ($address2Elements as $address2) {
$address2->nodeValue = "Value Replaced";
}
var_dump($domDocument->saveXML());
Выход:
string(58) "
Value Replaced
"
Это - Метод на представлении. Таким образом, у Вас был бы абстрактный метод, как ShowCustomerForm (), например, и реализацией для WinForms будет CustomerForm. Покажите (или независимо от того, что это находится в WinForms), и в WebForms это был бы Ответ. Redirict(CustomerForm.aspx).
Используя некоторый интерфейс навигатора, например:
interface INavigator
{
void MoveTo (string screenName);
void MoveTo (string screenName, NavigationParameters parameters);
}
У каждого предъявителя затем был бы экземпляр этого навигатора переданным в конструкторе. Таким образом, навигация отделяется и от предъявителя и от отдельных представлений.
У Вас может быть отображение между псевдонимами и фактическими классами Формы, определенными в конфигурации.
Я предполагаю, что Вы имеете в виду другой экран, который имеет его собственное парное MVP?
Я думал о том случае этим утром, мое решение будет, вероятно, состоять в том, что существует Координатор, знает Предъявителя и парное MVP, которое должно быть открыто. Тот открывает новый presenter+view и, по окончании, дополнительно называет метод на первом предъявителе с результатами.
Таким образом первый MVP ничего не должен знать о новом экране, они только запускают событие. Логика для открытия второго окна и передачи назад полностью содержится в Координаторе.
Мы делаем это использование, что Lennaert вызывает координатором (мы называем это workflowcontroller). Я происхожу из веб-разработки Java, и идея была формой ApplicactionController. Я столкнулся с некоторыми проблемами с этим, workflowcontroller выполняет команду. Каждая команда представляет рабочий процесс или серию связанных шагов (таким образом имя workflowcontroller). flowcontroller обрабатывает naviagation между командами, и flowcontroller имеет навигатора, который перешел между шагами. Каждый шаг имеет событие конца (который предъявитель соединен проводом к), и Метод NextStep, который мы используем для навигации к следующему шагу. Наш worflowcontroller сильно связывается к меню, таким образом, мы можем перейти между различными рабочими процессами, шаги устанавливают ссылку между представлением и предъявителями. Мы не имеем никакой конфигурации и соединили проводами логику, которая устанавливает следующий шаг для выполнения в метод под названием NextStep. Это работает, но я не очень удовлетворен этим. Слишком много детали для вхождения здесь. Я думал о shifing к чему-то, что более управляемо событиями. Мы используем шину сообщения, чтобы сделать всю нашу другую коммуникацию, и я хотел бы сместиться к использованию этого для навигации между экранами. Я не знаю, было ли это полезно или нет. наши экраны по большей части состоят из последовательных рабочих процессов.