asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[1]


发布日期:2021年02月01日
 
ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[1]

基于IoC的ControllerFactory(

我们创建一个EmployeeRepository对象来进行数据的获取并为它定义了对应的接口IEmployeeRepository如下面的代码片段所示IEmployeeRepository仅仅具有一个返回Employee列表的唯一方法GetEmployees用于获取指定ID的员工信息如果指定的ID为空则返回所有员工列表EmployeeRepository直接利用一个静态字段模拟对数据的存储

public interface IEmployeeRepository

{

IEnumerable<Employee> GetEmployees(string id =

}

public class EmployeeRepository : IEmployeeRepository

{

private static IList<Employee> employees;

static EmployeeRepository()

{

employees = new List<Employee>()

employeesAdd(new Employee( 张三 new DateTime(

销售部))

employeesAdd(new Employee( 李四 new DateTime(

人事部))

employeesAdd(new Employee( 王五 new DateTime(

人事部))

}

public IEnumerable<Employee> GetEmployees(string id =

{

return employeesWhere(e => eId == id || stringIsNullOrEmpty(id))

}

}

我们创建了一个具有如下定义的EmployeeController它具有一个类型为IEmployeeRepository的属性Repository应用在上面的DependencyAttribute特性告诉我们这是一个依赖属性当我们采用UnityContainer来激活EmployeeController对象的时候会根据注册的类型映射来实例化一个实现了IEmployeeRepository的类型的实例来初始化该属性

public class EmployeeController : Controller

{

[Dependency]

public IEmployeeRepository Repository { get; set; }

public ActionResult GetAllEmployees()

{

var employees = thisRepositoryGetEmployees()

return View(EmployeeList employees)

}

public ActionResult GetEmployeeById(string id)

{

Employee employee = thisRepositoryGetEmployees(id)FirstOrDefault()

if (null == employee)

{

throw new HttpException( stringFormat(ID为{}的员工不存在 id))

}

return View(Employee employee)

}

}

EmployeeController定义了两个基本的Action方法GetAllEmployees通过Repository获取所有员工列表并将其通过名位EmployeeList的View呈现出来另一个Action方法GetEmployeeById根据指定的ID获取相应的员工信息最终用于呈现单个员工信息的View为Employee如果根据指定的ID找不到相应的员工直接抛出一个状态为的HttpException异常

[] []

               

上一篇:ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[2]

下一篇:ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(3)[1]