@ Предложение Самуила совершенно адекватно при сборе одного или двух значений от пользователя.
Если вы получаете много значений, то решение вашего вопроса тоже подойдет.
Не становитесь жертвой преждевременной оптимизации и чрезмерно разрабатывайте несвязанное решение. По граничным объектам я предполагаю, что вы ссылаетесь на экземпляр структуры данных, на который ссылаются мэйнфрейм и диалог. В чем проблема с диалогом и мэйнфреймом, которые ссылаются на этот объект? В чем преимущество развязки объекта границы / переноса в этом сценарии?
Единственный эффект развязки, который я мог видеть здесь, - это отсоединение мэйнфрейма от конкретной реализации, которая доставляет ему данные. Таким образом, вместо того, чтобы создавать экземпляр Dialog и вызывать Dialog.ShowModal для мэйнфрейма, внедрение зависимостей предоставило бы мэйнфрейму IDataYouNeedGetter (который мог бы быть тем же самым модальным диалогом), и в соответствующее время мэйнфрейм делал бы
myGetter.SetTransferObject(dataStructInstance)
myGetter.GoGetTheData()
// do stuff with dataStructInstance now that myGetter set it up.
НО, нет никакой причины добавлять слой косвенности, если вы уже не знаете о конкретной необходимости разъединения.