【问题标题】:An application design question一个应用程序设计问题
【发布时间】:2009-12-13 08:55:06
【问题描述】:

我正在使用 .Net Compact Framework 2.0 SP2C# 开发 Windows Mobile 5.0 或更高版本 应用程序。

我必须使用库:一个用于访问 SQL Server CE,另一个使用自定义控件。

当我从 SQL Server 检索数据时,我使用结构来返回它们。这些结构在库一中定义。

我的问题是这些数据与库 2 上的一些自定义控件一起使用。我该如何解决?

  1. 在 library2 上引用 library1。一世 可以这样做,但 library1 是特定的 到这个项目和 library2 可以 使用并且必须在另一个中使用 不使用 library1 的项目。
  2. 创建另一个库来存储此结构?
  3. ??

你怎么看?

【问题讨论】:

    标签: c# compact-framework


    【解决方案1】:

    让我们简化一下:

    • Library1 包含数据结构
    • Library2 包含一些控件,这些控件使用 Library1 中的某些数据结构

    有两种选择:

    a) 提取接口。

    Library2 中的某些控件直接使用 Library1。您可以修改这些控件以使用接口而不是该接口的 Library1 实现。将接口放入Library3。现在你有:

    • Library3 包含数据接口(无引用)
    • Library2 包含一些使用符合 Library3 接口的数据的控件(引用 Library3,不知道 Library1)
    • Library1 包含符合 Library3 接口的数据结构(引用 Library3,不了解 Library2)
    • 应用程序是唯一一个包含对所有 3 个库的引用并提供来自 Library2 的控件和来自 Library1 的数据结构的组件。

    b) 提取通用实现

    Library2 中的某些控件直接使用 Library1。您可以将这些数据结构从 Library1 提取到 Library3 中。现在你遇到了类似上面的情况。

    【讨论】:

      【解决方案2】:

      您可以将结构体作为对象或基类或在 Library1 之外定义的接口传递吗?用户控件对对象做了什么?

      我的建议是将这些对象抽象为一个通用实现并将该抽象存储在 Library2 或 Library3 中,然后在 Library1 中引用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多