调用getter而不将其分配给任何东西(延迟加载)

时间:2009-03-25 13:40:25

标签: flex lazy-loading dto

我有一个可以使用Lazy Load Pattern完全加载或延迟加载的DTO。如何加载取决于Flex应用程序需要什么。但是,此DTO将发送到Flex应用程序(swf)。通常,只有在调用时才会加载一个集合。但是在我的情况下,该集合只会在Flex中调用,因此我在.NET端的实现在这种情况下显然不起作用(除非Flex会进行服务器调用......我想避免的事情)。 / p>

在集合的getter中,从数据库中检索数据。如果我将使用ASP.NET页面,它将起作用,但如果将DTO发送给Flex则不行。

你会怎么处理这个?我可以在将DTO发送到Flex之前调用getter,但这看起来很糟糕...... +调用getter只能在分配给某些东西时才能完成(并且将永远不会使用将保存该集合的局部变量... )。

2 个答案:

答案 0 :(得分:2)

您可以引入一种方法来加载依赖项 - loadDependencies - 在通过线路(到Flex)发送之前,应该对DTO对象进行所有延迟加载。您可以将此方法抽象为接口,以跨不同的DTO简化此类过程。没有什么可以像你在这个方法中描述的那样使用getter。

答案 1 :(得分:1)

我可能会为该类引入一个Finalize方法,并且可能为该类的各种集合引入FinalizeAll扩展方法。此方法将简单地通过并引用类的公共属性上的所有getter以确保它们已加载。在将对象发送到Flex应用程序之前,您可以调用Finalize(或FinalizeAll)。您甚至可能希望将其设置为接口,以便在传输对象之前测试完成的需要,并根据接口测试调用方法,而不是单独检查每个类。

注意:Finalize只是首先想到的名字。可能(可能)是一个更好的名称。