【发布时间】:2010-02-15 02:03:57
【问题描述】:
除了 SiteMap 数据源之外,我从来不需要真正使用任何 .NET 数据源,但是我正在尝试利用需要分配数据的控件上的内置 CRUD 操作源才能正常工作。
当我一直在研究有关实现 ObjectDataSource 及其相关类的在线信息时,我已经意识到它的明显令人不安的地方,事实上它基本上是一个静态类,它应该能够神奇地处理一种类型的 CRUD 操作。一旦我意识到这一点,我无论如何都无法正确设计这些适配器,因此它们不会像血友病患者那样引起关注。
我想出的唯一想法是,如果该类在其每个操作中利用服务定位器模式来获取执行实际 CRUD 的正确类。仅通过控制反转容器中的.Resolve 使用这在某种程度上是可行的,但是这似乎只是通过需要对我的 IOC 框架做很多魔术来始终解决问题,我将关注点转移到一个更不明显的地方数据代理的正确实例。
我真正需要适配器做的只是调解调用以将 CRUD 操作应用于 ViewState 支持的IList<MyBizObject>。
在写完这个问题后,我开始思考如何使用 Model-View-Presenter 模式进行逻辑分离,我看到的第一个解决方案是因为我的 Presenter 类有一个属性我的视图,我可以使用Container.Resolve<Presenter>(),这将使我能够访问我的视图,这将使我能够访问我的 ViewState 支持的字段,并为每个需要其视图以拥有 ObjectDataSource 的演示者创建一个类。
除了我对此的最后想法之外,还有其他人有任何意见或替代方案吗?
【问题讨论】:
-
请以问题的形式表达问题......不是咆哮
标签: .net inversion-of-control objectdatasource encapsulation