gpt4 book ai didi

c# - 使用 IoC 的项目中目录的推荐文件夹结构是什么

转载 作者:太空狗 更新时间:2023-10-29 21:21:54 25 4
gpt4 key购买 nike

我读过一些文章,也看过很多关于 DI 和 IoC 的 YT 讲座/教程,但我没有在 VS 解决方案中找到任何推荐的目录布局。

我说的是项目(例如游戏),其中只有很少的类/接口(interface)、记录器、数据库提供程序、wcf 服务、wpf 表示层(这实际上是不同的项目)...

是否有任何模式项目,表明我应该如何组织我的项目,这样接下来,有经验的程序员就不会浪费时间弄清楚发生了什么?就像我们在谈论“ self 评论的代码”一样,我在谈论“ self 评论的项目结构”。

例如,我是否应该将所有接口(interface)都放入“Interfaces”目录中?或者我应该(在记录器的情况下)创建“记录器”目录并将接口(interface)、类、具有扩展方法的类(全部,专注于日志记录)放在那里。代码集中在Board,在“Board”目录中。 “字段”等的单独目录。

现在的结构看起来像那样。我不确定那里的“业务”和 Logger。我在不同的目录中有接口(interface),然后是其他记录器类。我应该调用 Log4Net 提供商吗?或适配器?或装饰?它只是一个实现 ILogger 接口(interface)的记录器类。这是屏幕:link

下面是示例代码(目前还没有IoC,但是大家会注意到那里映射了3个接口(interface),非常简单):

public class Game
{
public IBoard Board { get; set; }

public Game(IBoard board)
{
Board = board;
}
}

public interface IBoard {}

public class Board : IBoard
{
public IField[,] Fields { get; set; }
public Board(IField field, int boardWidth, int boardHeight)
{
Fields = new IField[boardHeight, boardWidth];
Fields.Initialize();
}
}

public interface IField {}

public class Field : IField {}

public interface ILogger
{
void Log(LogEntry entry);
}

最佳答案

我通常做的是我有一个 MyApplication.Core (类库)层,它包含所有应用程序接口(interface),具有尽可能少的(读取:无)第三方依赖项,例如ILogger , ICommandIQuery<TResult> .

接下来我有一个 MyApplication.Domain (类库)层,其中包含所有应用程序领域的特定知识——这是业务层。这是核心接口(interface)的实现 ICommand , IQuery<TResult> .然后这些实现依赖于例如ILogger .从不具体实现。

然后我有 MyApplication.Infrastructure (类库)这是所有服务接口(interface)来自 MyApplication.Core 的地方已实现,例如ILogger .这里可以依赖第三方库,比如Log4Net。

最后是表示层,在我的例子中通常是 MVC 应用程序,所以我将其命名为 MyApplication.Web.Mvc .所有 Controller 都只依赖于接口(interface)。从不具体实现。该层还负责使用 Composition Root 将所有接口(interface)引导至具体实现。 .

长话短说:

  • MyApplication.Core(应用接口(interface)层)
  • MyApplication.Domain(业务逻辑)
  • MyApplication.Infrastructure(应用接口(interface)层的实现)
  • MyApplication.Web.Mvc(表示和组合根层)

关于c# - 使用 IoC 的项目中目录的推荐文件夹结构是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com