Winforms - 最佳目录/项目结构

leo*_*ora 8 c# winforms

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

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

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

    此外,在文件夹结构方面,什么是更好的嵌套:

    接口
    --- IFoo
    --- IData
    Impl
    --- Foo
    ---数据

    要么

    产品
    ---接口/ IP
    产品--- Impl /产品
    Foo
    --- Impl/Foo
    ---接口/ IFoo

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

    思考?最佳做法?

  • Odd*_*Odd 7

    对我来说,这取决于我所遵循的模型.如果我使用的是MVC,那就是

    Project
    -Models
    -Controllers
    -Views
    
    Run Code Online (Sandbox Code Playgroud)

    或者对于MVP来说

    Project
    -Models
    -Presenters
    -Views
    
    Run Code Online (Sandbox Code Playgroud)

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

    Project
    -Models
    --Inventory
    -Controllers
    --Inventory
    ---TransactionsController.cs
    -Views
    --Inventory
    ---Transactions
    ----EditTransactionsView.dfm
    
    Run Code Online (Sandbox Code Playgroud)

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


    Nic*_*ord 7

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

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

    - Project
        + Forms
        + Classes
        + UserControls
        + Resources
        + Data
    
    Run Code Online (Sandbox Code Playgroud)

    所以我最终得到:

    new Forms.AboutForm().ShowDialog();
    Controls.Add(new Controls.UberTextBox());
    
    Run Code Online (Sandbox Code Playgroud)