【发布时间】:2020-01-02 20:56:24
【问题描述】:
我在 YT 上阅读了几篇关于 DI 和 IoC 的文章并观看了许多讲座/教程,但我没有在 VS 解决方案中找到任何推荐的目录布局。
我说的是项目(例如一个游戏),其中您有很少的类/接口、记录器、数据库提供程序、wcf 服务、wpf 表示层(实际上是不同的项目)...
是否有任何模式项目,显示我应该如何组织我的项目,所以接下来,有经验的程序员不会浪费时间弄清楚发生了什么?就像我们在谈论“自注释代码”一样,我在谈论“自注释项目结构”。
例如,我应该将所有接口都放入“接口”目录吗?或者我应该(在记录器的情况下)创建“记录器”目录并将接口、类、具有扩展方法的类(全部,专注于日志记录)放在那里。代码集中于 Board,在“Board”目录中。 “字段”等的单独目录。
现在的结构是这样的。我不确定那里的“业务”和记录器。我在不同的目录中有接口,然后是其他记录器类。我应该致电 Log4Net 提供商吗?或适配器?还是装饰师?它只是一个实现ILogger 接口的记录器类。这是屏幕:link
这是示例代码(目前还没有 IoC,但大家会注意到那里映射了 3 个接口。非常简单):
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);
}
【问题讨论】:
-
严格基于意见 - 使用适合您/您的团队的布局。您使用的框架通常会建议一些布局(即 ASP.Net MVC 建议控制器/模型/视图文件夹),但没有真正的黄金标准(而且它可能也会因不同的 DI 容器而异)。
-
看看onion架构
标签: c# .net dependency-injection architecture inversion-of-control