2

我有一个可以使用延迟加载模式完全加载或延迟加载的 DTO。它的加载方式取决于 Flex 应用程序的需求。但是,此 DTO 将被发送到 Flex 应用程序 (swf)。通常,例如一个集合,只会在调用时加载。然而,在我的情况下,集合只会在 Flex 中调用,因此我在 .NET 端的实现显然在这种情况下不起作用(除非 Flex 会进行服务器调用......我想避免的事情)。

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

你会如何处理这个问题?我可以在将 DTO 发送到 Flex 之前调用 getter,但这似乎很糟糕...... + 只有在将 getter 分配给某些东西时才能调用 getter(并且永远不会使用将保存集合的局部变量...... )。

4

2 回答 2

2

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

于 2009-03-25T13:50:19.970 回答
1

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

注意:Finalize 只是浮现在脑海中的第一个名字。可能(可能)有一个更好的名字。

于 2009-03-25T13:48:26.060 回答