c# - 容器类的 C# DI 实例化(IList、IEnumerable、...)
问题描述
使用依赖注入,应该如何创建数据容器的实例,如 List、Dictionary 等。
给出以下示例:
public interface IXyz { }
public class Xyz : IXyz { }
创建一个简单的列表是否违反样式模式?像这样:
public class Abc
{
IList<IXyz> _data = new List<IXyz>();
public Abc()
{
}
}
或者我应该使用 DI 并让我的容器为我解析列表?像这样:
public class Abc
{
IList<IXyz> _data;
public Abc(IList<IXyz> list)
{
_data = list;
}
}
还是完全不同的东西?
解决方案
为了回答这个问题,您应该首先回答以下问题:
您想
Abc
对实现的生命周期做出任何决定IXyz
吗?如果答案是肯定的 - 在里面创建一个项目列表
Abc
。否则 - 使用 DI 容器。实现是否
IXyz
取决于系统的任何横切关注点?如果答案是肯定的- 使用 DI 容器。否则 - 继续创建/填充里面的列表
Abc
推荐阅读
- c++ - 如何在 C++ 中覆盖向量的运算符
- asp.net - 如何在web api中的get和delete方法中传递相同的参数和方法名
- html - 单击该帖子广告上的回复按钮后,如何使相应的 div 可见?
- android - 根据旧密码更新密码。SQLite 数据库安卓
- angularjs - 错误:未指定的错误。在 Angular js 中添加 localStorage.setItem 时
- goland - GoLand 文件缓存冲突
- ios - 除非第一个请求来自邮递员,否则无法将图像上传到服务器
- python-3.x - Python:保留用户输入并仅处理未通过验证的输入
- sql - 选择列的 Oracle 组子集
- angular - angular2-qrscanner 拒绝从 'blob:https:// 加载媒体
/'