Вызов средства получения без назначения его чему-либо (отложенная загрузка)

StackOverflow https://stackoverflow.com/questions/681647

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть DTO, который может быть полностью загружен или лениво загружен с использованием шаблона ленивой загрузки.То, как он загружается, зависит от того, что нужно приложению Flex.Однако этот DTO будет отправлен в гибкое приложение (swf).Обычно, например, коллекция загружается только при вызове.Однако в моем случае коллекция будет вызываться только в Flex, поэтому моя реализация на стороне .Очевидно, что в этом случае NET не будет работать (за исключением того, что Flex выполнит вызов сервера...что-то, чего я хотел бы избежать).

В получателе коллекции данные извлекаются из базы данных.Если бы я работал с ASP.NET страницами, это сработало бы, но не в том случае, если DTO отправляется в Flex.

Как бы вы справились с этим?Я мог бы вызвать получатель перед отправкой DTO в Flex, но это кажется ужасным...+ вызов средства получения может быть выполнен только в том случае, если оно чему-то присвоено (а локальная переменная, которая будет содержать коллекцию, никогда не будет использоваться ...).

Это было полезно?

Решение

Я бы, вероятно, представил Finalize метод для класса и, возможно, FinalizeAll метод расширения для различных коллекций класса.Этот метод просто просматривал бы и ссылался на все геттеры в общедоступных свойствах класса, чтобы гарантировать, что они загружены.Вы бы призвали Finalize (или FinalizeAll) перед отправкой объекта (ов) в ваше приложение Flex.Возможно, вы даже захотите сделать это интерфейсом, чтобы вы могли проверить необходимость доработки перед передачей своих объектов и вызвать метод на основе теста для интерфейса, а не проверять каждый класс в отдельности.

ПРИМЕЧАНИЕ:Finalize - это просто первое имя, которое пришло на ум.Для этого может быть (вероятно, есть) лучшее название.

Другие советы

Вы можете ввести метод для загрузки зависимых элементов - loadDependencies - это должно занять всю отложенную загрузку для вашего объекта DTO перед отправкой по проводу (в Flex).Вы можете абстрагировать этот метод от интерфейса, чтобы упростить такой процесс для разных DTO.Нет ничего против использования геттеров так, как вы описали это внутри этого метода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top