我正在学习 Ninject 并进行试验(周四是一个 web api 项目)。
我写了一个控制器,它将调用存储库并更新数据源中的元素
我有一个充当数据源的类(为了简单起见)
public class UserDb
{
private readonly List<UserModel> _listUsers;
public UserDb()
{
_listUsers = new List<UserModel>();
_listUsers.Add(new UserModel { UserId = "A123", CreditRemaining = 10.00, LastModified = DateTimeOffset.Now });
_listUsers.Add(new UserModel { UserId = "ABC1", CreditRemaining = 20.35, LastModified = DateTimeOffset.Now });
}
public List<UserModel> Users => _listUsers;
}
在我的 Ninjectwebcommon 文件中,我以下列方式创建依赖项
kernel.Bind<IUserCardDetailsRepository>().To<UserCardDetailsRepository>().InRequestScope();
kernel.Bind<LockingObject>().ToSelf().InSingletonScope();
kernel.Bind<UserDb>().ToSelf().InSingletonScope();
现在,对于我向控制器发出的每个请求,它都会创建一个新的 UserDb 实例,而不是使用已经创建的实例。
我以为 InSingletonScope 创建一次并分发它,所以对象的状态仍然存在?我错过了什么?