小编ras*_*ghp的帖子

使用存储库在工作单元模式中的依赖注入

我想创建一个环绕在类似的方式对存储库工作类的单元.

我遇到的问题是尝试通过用IRepository接口替换示例中的通用存储库来实现依赖注入.在链接文章中的uow中,他们使用getter来检查存储库是否被实例化,如果不是,则实例化它.

public GenericRepository<Department> DepartmentRepository
{
    get
    {
        if (this.departmentRepository == null)
        {
            this.departmentRepository = new GenericRepository<Department>(context);
        }
        return departmentRepository;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是强烈耦合的.

我可以通过两种方式看到这一点.

  1. 使用构造函数注入.
  2. 使用setter注入.

1的问题是,如果我注入所有存储库,我必须实例化每个存储库,即使我不在特定的工作单元实例中使用它们.因此招致了这样做的开销.我想象使用一个数据库范围的工作单元,这会导致很多不必要的实例化和一个巨大的构造函数.

2的问题是很容易忘记设置和结束空引用异常.

在这种情况下是否有任何最佳实践?还有其他我错过的选择吗?

我刚刚进入依赖注入,并完成了我可以找到的关于该主题的所有研究,但我可能会遗漏一些关键.

c# entity-framework dependency-injection unit-of-work

39
推荐指数
2
解决办法
3万
查看次数

无法在443上运行节点js应用程序监听

我有一个套接字应用程序,我试图在端口443(https)上进行监听.如果我改变端口(例如8080)我没有问题.

显示的错误是

error raised: Error: listen EACCES
Run Code Online (Sandbox Code Playgroud)

我的应用源代码是:

var fs = require('fs');

// create the https server and listen on port
var options = {
    ca:   fs.readFileSync('ca.pem'),
    cert: fs.readFileSync('cert.pem'),
    key:  fs.readFileSync('server.key')
};

var server = require('https').createServer(options);
var portNo = 443;
var app = server.listen(portNo, function() {
  console.log((new Date()) + " Server is listening on port " + portNo);
});

// create the socket server on the port
var io = require('socket.io').listen(app);


// This callback function is called every time a …
Run Code Online (Sandbox Code Playgroud)

javascript node.js socket.io webrtc

2
推荐指数
1
解决办法
5023
查看次数