Я пишу программу для поиска и экспорта вывода.
У меня есть три основных объекта:
- Запрос
- Результаты поиска
- ExportOutput
Каждый из этих объектов связан со своим предшественником.
Т.е.: ExportOutput -> SearchResults -> Запрос
Это нормально? Должны ли они быть как-то более слабо связаны?
Уточнение:
В последующих процессах используются свойства и методы для объектов-предшественников.
То есть:
SendEmail(output.SearchResults.Request.UserEmail, BODY, SUBJECT);
Это пахнет даже для меня. Единственный способ исправить это - скрыть свойства в каждом, так что я получаю доступ только к одному уровню
MailAddress UserEmail
{
get { return SearchResults.UserEmail; }
}
что бы дать
SendEmail(output.UserEmail, BODY, SUBJECT);
Но опять же, это просто скрывает проблему.
Я мог бы скопировать все из объектов-предшественников в их преемники, но это сделало бы ExportOutput действительно безобразным. Это их лучший способ для учета этих объектов.
Примечание: SearchResults реализует IDisposable, поскольку он ссылается на неуправляемые ресурсы (временные файлы), поэтому я действительно не хочу просто дублировать это в ExportOutput.