c# - 通过构造函数的依赖注入只创建一个实例
问题描述
我想问一下如何通过构造函数创建正确的依赖注入来创建唯一对象列表。现在我遇到了这种情况:1)我将一个对象添加到我的对象列表中,但是随后的每个对象都会覆盖所有先前的对象(即它不是唯一的)。2)我静态引用工厂类。但是在这种情况下,我不在此接口的构造函数中使用依赖注入。
有没有其他可能的解决方案。
感谢所有的答案。
示例它不是 100% 相同的代码(因为我的列表也由构造函数初始化):
class GetUserFirstOption
{
IUser _user;
GetUserFirstOption(IUser user)
{
_user = user;
}
public void UsersInCompany()
{
//Here is connection to the database where i upload 500 records to UsersFromDataBase
List<User> UsersInCompany = new List<User>();
foreach (var userDB in UsersFromDataBase)
{
_user.Name = userDB.Name;
_user.SecondName = userDB.SecondName;
//...
UsersInCompany.Add(_user);
//Here i have 500 users but all same
}
}
}
class GetUserSecondOption
{
public void UsersInCompany()
{
List<User> UsersInCompany = new List<User>();
foreach (var userDB in UsersFromDataBase)
{
_user = Factory.CreateNewUser();
_user.Name = userDB.Name;
_user.SecondName = userDB.SecondName;
//...
UsersInCompany.Add(_user);
//I have 500 unique records but i do not need to it dependency injection
}
}
}
class Factory
{
public static IGetUserSecondOption CreateUserInCompany()
{
return new GetUserSecondOption(UserFactory.CreateNewUser());
}
}
class UserFactory
{
public static IUser CreateNewUser()
{
return new User();
}
}
class Program
{
public static Main(string []args)
{
IGetUserSecondOption Get = Factory.Factory.CreateUserInCompany();
Get.UserInCompany();
}
}
解决方案
与其将用户注入到您的循环中,不如创建一个创建用户的工厂。然后你可以注入工厂:
class GetUserSecondOption
{
public GetUserSecondOption(UserFactory factory) { this.Factory = factory; }
public void UsersInCompany()
{
List<User> UsersInCompany = new List<User>();
foreach (var userDB in UsersFromDataBase)
{
var user = this.Factory.CreateNewUser();
user.Name = userDB.Name;
user.SecondName = userDB.SecondName;
//...
UsersInCompany.Add(user);
}
}
}
推荐阅读
- css - 对象适合在 Internet Explorer 上不起作用
- c# - 如何捆绑 .NetCore API + Angular 前端
- php - Count 在 Laravel/Lumen 中返回错误的行数
- database - Knex Id 列被连接表 id 覆盖
- r - 多边形有开放边吗?考虑 R {spdep} 中的全部/部分邻居
- python - openpyxl pip 安装失败
- c# - 从服务过滤器向操作过滤器添加参数
- java - Eclipse 字体在错误的位置?
- python - 从 WKT 字符串中提取 XY 范围
- angular - Ionic Firebase 需要转换嵌套数组