Dav*_*vid 4 asp.net-mvc dependency-injection ninject repository-design custom-model-binder
我确定之前有人问过这个,但我很难找到.
我正在使用Ninject从我的控制器中删除依赖项,以及存储库设计模式.
据我了解,这种方法的好处之一是,我可以轻松地将我的存储库和域实体分开,并且如果我愿意,可以使用另一个程序集.因此,我将域实体和存储库保存在外部程序集中,并可以从接口模拟我的所有依赖项.
似乎虽然我可以在大多数地方使用接口来引用我的域实体,但在模型绑定方面我必须使用对具体类的引用.我已经读过这与我理解的序列化有关,但是避免引用域实体创建单独模型的唯一方法是什么?
我可以用自定义模型绑定做什么吗?
一点背景:我是一位经验丰富的ASP.net开发人员,但对MVC来说是新手.
使用依赖注入框架的主要优点是IoC(控制反转):
所以人们通常做的是通过它们的接口注入存储库,如
public class MyController : Controller
{
private IPersonRepository personRepo;
public MyController(IPersonRepository personRepo)
{
this.personRepo = personRepo;
}
...
}
Run Code Online (Sandbox Code Playgroud)
在测试期间,这允许轻松注入我的模拟存储库,它返回我想要测试的那些值。
注入域实体没有多大意义,因为它们与特定类/控制器中的功能更紧密地联系在一起,因此进一步抽象它们只是一种开销而不是一种好处。相反,如果您想将实际实体模型与控制器分离,您可以查看 MVVM 模式,创建专门的“ViewModels”。
想想你的控制器的可测试性:“我想模拟什么来对其进行单元测试?”
我不会在这里包含域实体,因为它们通常只是一个数据容器。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |