我面临即将升级到ASP.NET站点的问题,我正在考虑使用Unity引入DI。我研究了ASP.NET DI方面的东西,有2个选项(Global.asax或IHttpModule)。我很乐意使用它们。
与往常一样,我希望升级/更改遗留对象模型。我想沿着构造函数注入的路径(传入DAO)但是,每个对象都混合了静态和实例方法,这两种方法当前都使用SqlCommand对象本身调用DB。我希望将其删除以提供数据库独立性,因此在这种情况下,任何人都可以建议进行DI的最佳方法吗?如果需要的话,我会接受激烈的改变。
public class ExampleClass
{
public ExampleClass(int test)
{
TestProperty = test;
}
public int TestProperty {get; set;}
public int Save()
{
// Call DB and Save
return 1;
}
public static ExampleClass Load(int id)
{
// Call DB and Get object from DB
return new ExampleClass(1);
}
}
感谢您的任何建议
马特
答案 0 :(得分:0)
如果删除所有静态方法并引入一些抽象,那么你应该很高兴:
public class ExampleClass
{
public int TestProperty { get; set; }
}
public interface IRepository
{
ExampleClass Load(int id);
int Save();
}
public class RepositorySql: IRepository
{
// implement the two methods using sql
}
并在您的ASP页面中:
private IRepository _repo = FetchRepoFromContainer();
public void Page_Load()
{
var someObj = _repo.Load(1);
// ... etc
}