Winforms - 最佳目录/项目结构

时间:2008-10-07 19:35:00

标签: c# winforms

希望看到人们关于在winforms C#app的项目/解决方案上组织目录和项目结构的最佳方法的想法。

大多数人都同意最好地分离观点,业务逻辑,数据对象,接口,但想看看不同的人如何解决这个问题。此外,将第三方依赖项隔离到实现项目中,然后让消费者引用的界面导出项目

  • View.csproj
  • BusinessLogic.csproj
  • Data.csproj
  • CalculatorService.Exported.csproj(接口)
  • CalculatorService.MyCalcImpl.csproj(一个实现)
  • CalculatorService.MyCalcImpl2.csproj(另一种实现)

    另外,就文件夹结构而言,更好的嵌套是什么:

    接口
    --- IFoo的
    --- IData的
    IMPL
    ---富
    ---数据

    产品
    ---接口/ IProduct
    ---默认地将Impl /产品

    ---默认地将Impl /美孚
    --- Interfaces / IFoo

    所有人都试图推动对抽象的分离依赖和快速改变实现的能力。

    思考?最佳做法?

  • 3 个答案:

    答案 0 :(得分:7)

    对我而言,这取决于我所遵循的模型。如果我使用的是MVC,那就是

    Project
    -Models
    -Controllers
    -Views
    

    或者对于MVP来说,这将是

    Project
    -Models
    -Presenters
    -Views
    

    在视图下,我将它们分成与控制器相关的命名空间,即如果我有一个控制器来处理库存交易我可能会将其作为

    Project
    -Models
    --Inventory
    -Controllers
    --Inventory
    ---TransactionsController.cs
    -Views
    --Inventory
    ---Transactions
    ----EditTransactionsView.dfm
    

    对于接口,我将接口放在与实现相同的目录中。

    答案 1 :(得分:7)

    有点迟到的答案,但也可以插话。

    我一直在根据实际的项目类型亲自使用文件夹。例如:

    - Project
        + Forms
        + Classes
        + UserControls
        + Resources
        + Data
    

    所以我最终得到了:

    new Forms.AboutForm().ShowDialog();
    Controls.Add(new Controls.UberTextBox());
    

    答案 2 :(得分:0)

    我们通常将SourceSafe项目,项目名称,名称空间和目录结构保持同步。

    例如,假设我们的公司名称为XC​​ENT,则SourceSafe结构和App1的相应目录结构如下所示:

    \XCENT
    \XCENT\App1
    \XCENT\App1\UI
    \XCENT\App1\UI\Test //test harness for UI
    \XCENT\App1\Data
    \XCENT\App1\Data\Test //test harnesses for Data
    

    UI项目名为XCENT.App1.UI.cproj,该名称空间中的类是XCENT.App1.UI

    我们为许多客户工作,因此专门为他们工作的前缀是他们的名字。 Client1 \ App1 \ UI等

    我们公司的每个人都使用相同的惯例,并立即清楚一切都适合。

    如果进一步划分逻辑间距是有意义的,我们就这样做了。这样的其他分段包括.Export,.Import,.Reporting,.Security等。